2013-08-01 1 views
0

В Java 6 в Windows я заинтересован в выполнении следующей задачи, но на самом деле не уверен, как это сделать.Как запустить процесс из памяти/ОЗУ как «текущий рабочий каталог»

  1. Я хочу взять почтовый файл
  2. распаковать его содержимое в место в памяти/RAM
  3. Создать процесс Java, который будет запускать файл .EXE, который существует в этом файле ZIP
  4. Этот .EXE должен быть запущен, пока текущим рабочим каталогом является это местоположение в ОЗУ.
  5. Затем мне нужно будет поместить другой файл в то же место «текущее рабочее место» в ОЗУ.

Я знаю, это звучит странно, но на самом деле это сделает что-то более эффективное, делая это таким образом, поэтому, если это возможно, было бы здорово знать.

+0

Создать RAM-диск – MadProgrammer

ответ

0

Это звучит сложно, и это, безусловно, потребует много вещей, которые невозможно сделать в чистой Java.

В Linux, я думаю, что вам нужно будет сделать следующее:

  • создать и смонтировать "TMPFS" - https://unix.stackexchange.com/questions/66329/creating-a-ram-disk-on-linux

  • Разархивируйте ZIP файл в TMPFS

  • Запустите .exe с помощью ProcessBuilder ..., который позволяет вам установить дочерний процесс текущего каталога.

  • так далее

  • Размонтируйте "TMPFS", когда вы сделали.

Команды создания файловой системы «ram disk» будут специфичными для ОС и могут потребовать привилегии root/administrator.


Непонятно, будет ли это более эффективным, чем использование временного каталога в файловой системе. Я бы не попытался это сделать, если бы не было четко продемонстрированной потребности в решении, которое было бы более эффективным; т. е. если вы не попытались использовать временный каталог и обнаружили, что он слишком медленный.

Имейте в виду, что:

  • много (возможно, большинство) работы распаковки файла ZIP должно быть сделано в любом случае вы это делаете, и

  • в обычном случае ваш .exe будет , вероятно, будет читать файлы из расширенного ZIP из кеша дискового блока OS'es в памяти (в Linux).