Как запустить программу в 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 без использования папки точки монтирования?