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

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]