Unix命令行参数可在单次打印后终止进程

时间:2019-07-11 08:19:21

标签: c unix

我需要传递unix参数来运行C文件,以便它仅一次打印某一行“ Hello World”。该文件使用fork多次打印该句子,但是在仅打印一次“ Hello World”句子之后,我需要发送一个kill信号来杀死进程。

我尝试了

./"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;
}

打印几次,然后挂起。

0 个答案:

没有答案