我需要fork
兩個子進程。人們可以接收到信號3,打印hello
並將信號4發送給另一個子進程;另一個可以接收信號4,打印world
並將信號3發送給第一個子進程。
要開始,父進程會在睡眠3秒後將信號3發送到第一個子進程。
然後3秒鐘後,父進程將發送SIGKILL
殺死他們兩個。
fork和信號:如何從父進程發送信號到特定子進程
我不知道如何發送信號到一個特定的子進程(我知道我們有一個功能kill
發送信號,但我不知道在這裏使用它)。
這裏是我的代碼:
#include <stdio.h>
#include <signal.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
void func(int n)
{
printf("ping\n");
// how to send signal 4 to the second process?
}
void func2(int n)
{
printf("pong\n");
// how to send signal 3 to the first process?
}
int main()
{
pid_t pid;
int i;
for(i = 0; i < 2; i++)
{
pid = fork();
if(pid == 0)
{
if(i == 0)
{
signal(3, func);
}
else
{
signal(4, func2);
}
while(1);
}
else
{
if(i == 1)
{
sleep(3);
// how to send signal 3 to the first child process?
sleep(3);
// how to kill the two children?
}
}
}
return 0;
}
在信號上下文中調用'printf()'的未定義行爲。 – EOF
http:// man7。org/linux/man-pages/man2/kill.2.html – alk
@EOF我應該怎麼做? – Yves