Аргументы командной строки Unix для уничтожения процесса после одной печати - PullRequest
0 голосов
/ 11 июля 2019

Мне нужно передать аргументы unix для запуска файла C, чтобы он печатал определенную строку «Hello World» только один раз.Файл использует fork, чтобы напечатать предложение несколько раз, но мне нужно отправить сигнал уничтожения, чтобы завершить процессы после того, как предложение «Hello World» напечатано только один раз.

Я пытался

./"file name" sleep 4 KILL -9 

Я не думаю, что здесь используется правильный синтаксис.

#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <stdio.h>

int main(int argc, char * argv[])
{
   int m, i, c = 0;
   pid_t pgid;

   m = atoi(argv[1]);

   for(i = 0; i < 3; ++i)
{
   if(fork() > 0)
   {
       c = 1;
   }
}

if(!c)
{
    pgid = getpgid(getpid());
    setpgid(getpid(), getpid());
    kill(m * pgid, SIGINT);
}

sleep(3);

if(fork() > 0)
{
    puts("Hello World");
}

return 0;
}

Он печатает несколько раз, а затем зависает.

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