Как подать сигнал от родительского процесса ребенку? - PullRequest
1 голос
/ 06 июня 2019

Как я могу отправить сигнал от родительского процесса ребенку? После записи в канал я хочу отправить сигнал дочернему процессу.

 pid_t pid;
     int filds[2];
     pipe(filds);
     char *args[150] = {"./draw.out", NULL};
     char buff = '\0';

     if ((pid = fork()) < 0) {  // fork a child process/
         printf("*** ERROR: forking child process failed\n");
         exit(1);
     } else if (pid == 0) {
         execvp(args[0], args); // execute the command
     } else {  // for the parent
         char btnPressed = getch();

         while (btnPressed != 'q'){
             btnPressed = getch();
             write(filds[1],buff, BUFF_SIZE); 
             //signal
         }
         // signal finish game.
     }

1 Ответ

0 голосов
/ 07 июня 2019
kill(PID, SIGwhatever);

однако это, вероятно, плохой выбор; лучшее решение -

close(filds[1]);

и обрабатывать закрытие ввода у ребенка. Я думаю, что вам не хватает

dup2(files[0],0);

на дочернем пути.

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