特定の行「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;
}
数回印刷した後、ハングします。