Как запустить программу в Linux без блокировки текущей папки?

На CentOS 6.3, в моей основной программе я монтирую том Truecrypt, содержащий исполняемые файлы A и B, в точку монтирования./tmpfolder. Я запускаю программу А, делая

system("./tmpfolder/A")  

от раздвоенного ребенка.

Программа А выполняет:
if (fork () == 0) {
система ("cp ./tmpfolder/B /tmp");
ChDir ("/ TMP");
execl ("/ tmp / B", "B", (char *) 0);
Выход (0);
}

В этот момент программа A выходит, оставляя программу B запущенной. Все идет нормально.

Программа B выполняет:
chdir ("/ tmp");
while (notdone) {/ * делать вещи */ }

Теперь я хочу размонтировать том Truecrypt, не отключая программу B. Я не могу; папка используется.

После запуска А, ps показывает B работает, с PID 27643 (например).
затем ls -l /proc/27643/cwd показывает "/ tmp". Таким образом, текущий рабочий каталог B не является папкой точки монтирования.

Но моя попытка размонтировать не удалась: "устройство занято".
А также fuser -c ~/tmpfolder шоу 27643, PID программы B. Итак, программа B все еще использует папку точки монтирования.

Как программа B все еще может использовать папку, в которой программа A работала, а затем выходила? Как я могу запустить B без использования папки точки монтирования?

0 ответов

Другие вопросы по тегам