Не хотите, чтобы родительский и дочерний процессы совместно использовали одну и ту же таблицу дескрипторов файлов - PullRequest
1 голос
/ 06 мая 2011

Я открываю файл в программе A. Его дескриптор файла - 3. Используя fork, за которым следует execve, я выполняю другую программу B, где я немедленно открываю другой файл. Этот дескриптор файлов равен 4. Если A и B не разделяют таблицу дескрипторов файлов, то дескриптор файла открытого в B файла должен быть равен 3. Мне нужно создать дочерние процессы, не разделяющие адресное пространство родителей, включая открытые файлы.

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

Дочерний элемент не не использует одну и ту же таблицу FD, вы просто забыли закрыть их в дочернем элементе или отметить их как закрытые при исполнении.

1 голос
/ 06 мая 2011

Закройте файл перед exec новым процессом. Сделайте это в коде между fork() и exec().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...