Поддержание работы потока после превращения основного процесса в демонаLinux

Ответить
Anonymous
 Поддержание работы потока после превращения основного процесса в демона

Сообщение Anonymous »

Обнаружение проблемы:

Я разрабатываю программу на языке C и в Ubuntu 16.04. Эта программа создает поток, слушающий удаленный запрос, а основная программа вызывает определенные функции, чтобы превратить весь процесс в демон, чтобы он мог работать в фоновом режиме.
Я обнаружил, что основная программа работала правильно, но поток не работал.
Что я пробовал:
Я прочитал исходный код превращения процесса в демон. Ниже приведена одна важная часть:

Код: Выделить всё

switch(fork()) {
case -1:
perror("fuse_daemonize: fork");
return -1;
case 0:
break;
default:
(void) read(waiter[0], &completed, sizeof(completed));
_exit(0);
}
После того, как родительский процесс fork() дочерний процесс, он считывает данные из канала и завершает работу. В то же время все потоки родительского процесса будут закрыты, поэтому исходный поток не сможет выполниться.
Мой вопрос:
Как я могу решить эту проблему? Учитывая, что мне нужно создать поток до того, как процесс будет превращен в демон, а не после того, как процесс будет превращен в демон.

Подробнее здесь: https://stackoverflow.com/questions/790 ... nto-daemon
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»