父子之间的信号和 C 中的 fork
signal between father and son and fork in C
大家好,感谢抽空回答我。
我有一个小问题:
问题是:
用 fork() 做一个程序。儿子睡 10 秒,父亲睡 1 秒,然后向儿子发送信号 SIGUSR1,等待儿子完成他的程序。
我做到了:`
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
void tononcle (int sig){
printf("signal %d recu\n",sig);
}
int main (){
int pid,status;
pid = fork();
if(pid){
printf("%s\n","Pere");
sleep(1);
kill(pid,SIGUSR1);
wait(&status);
exit(0);
}
else{
printf("%s\n","fils");
sleep(10);
signal(SIGUSR1,tononcle);
exit(0);
}
return 0;
}`
问题是我儿子在他的程序结束前 10 秒不睡觉。
有人有想法吗?
谢谢!!
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
void tononcle (int sig){
printf("signal %d recu\n",sig);
}
int main (){
int pid,status;
pid = fork();
switch(pid) {
case -1:
printf("Fork failed");
break;
case 0:
signal(SIGUSR1,tononcle);
printf("%s\n","fils");
sleep(10);
break;
default:
printf("%s\n","Pere");
sleep(1);
//kill(pid,SIGUSR1);
waitpid(-1, &status, 0);
exit(0);
}
return 0;
}
当你用 kill() 发送消息时,子进程被唤醒。你只需要评论你发送信号的线路。
大家好,感谢抽空回答我。 我有一个小问题:
问题是: 用 fork() 做一个程序。儿子睡 10 秒,父亲睡 1 秒,然后向儿子发送信号 SIGUSR1,等待儿子完成他的程序。
我做到了:`
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
void tononcle (int sig){
printf("signal %d recu\n",sig);
}
int main (){
int pid,status;
pid = fork();
if(pid){
printf("%s\n","Pere");
sleep(1);
kill(pid,SIGUSR1);
wait(&status);
exit(0);
}
else{
printf("%s\n","fils");
sleep(10);
signal(SIGUSR1,tononcle);
exit(0);
}
return 0;
}`
问题是我儿子在他的程序结束前 10 秒不睡觉。 有人有想法吗?
谢谢!!
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
void tononcle (int sig){
printf("signal %d recu\n",sig);
}
int main (){
int pid,status;
pid = fork();
switch(pid) {
case -1:
printf("Fork failed");
break;
case 0:
signal(SIGUSR1,tononcle);
printf("%s\n","fils");
sleep(10);
break;
default:
printf("%s\n","Pere");
sleep(1);
//kill(pid,SIGUSR1);
waitpid(-1, &status, 0);
exit(0);
}
return 0;
}
当你用 kill() 发送消息时,子进程被唤醒。你只需要评论你发送信号的线路。