0

特定の行「Hello World」を1回だけ出力するように、Cファイルを実行するためにUNIX引数を渡す必要があります。ファイルはフォークを使用して文を複数回出力しますが、「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;
}

数回印刷した後、ハングします。

4

0 に答える 0