C ++ запускает новый процесс и завершает текущий под linux - PullRequest
0 голосов
/ 12 октября 2011

Этот вопрос задавался здесь несколько раз, но я не могу найти ответ для следующей ситуации:

Моя программа использует статически связанные библиотеки, которые открывают дескрипторы файлов, поэтому я не могу установитьFD_CLOEXEC для этих файловых дескрипторов

простой вызов exec вызывает много ошибок в новом процессе из-за недоступных файловых дескрипторов

В основном мне нужно:
1. порождать новый процесс без блокировки текущего
2. завершить текущий процесс (закрыть все дескрипторы)

Могу ли я сделать это на Linux?

1 Ответ

2 голосов
/ 12 октября 2011

Закрытие всех файловых дескрипторов должно быть простым:

#include <unistd.h>

for (i=getdtablesize();i>=0;--i) 
     close(i); /* close all descriptors */

Это также стандартный шаг при демонизации, см., Например, http://www.enderunix.org/docs/eng/daemon.php

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