Chinaunix
标题:
父进程如何通知所有子进程做一件事?
[打印本页]
作者:
hackmong
时间:
2015-03-10 19:58
标题:
父进程如何通知所有子进程做一件事?
如题。父进程如何通知所有子进程做一件事?
作者:
zsszss0000
时间:
2015-03-10 20:01
各种进程间通讯方法,信号等等
回复
1#
hackmong
作者:
tsh185
时间:
2015-03-10 20:18
1: 父进程肯定知道子进程的 pid
2: 一个简单的方法 kill(子进程pid, SIGUSR1);
3: 子进程处理 SIGUSR1 信号
当然还要其他很多方法
作者:
hackmong
时间:
2015-03-10 22:30
谢谢!我按照你的建议写了个程序,但是出错,能麻烦帮忙看下吗?
FILE *fq;
void handler(int sig)
{
fq = fopen("/home/lee/www","a");
fprintf(fq,"Here!!!\n");
fclose(fq);
//exit(0);
}
int main()
{
pid_t pid = fork();
if(pid<0)
{
printf("error\n");
}
else if(pid == 0)
{
signal(SIGUSR1 , handler);
for(;;);
}
else
{
if(kill(pid,SIGUSR1)==0)
{
}
}
return 0;
}
复制代码
回复
3#
tsh185
作者:
hackmong
时间:
2015-03-10 22:32
谢谢!我写了个信号的程序,但是回调函数没有执行,不知出错在哪,能麻烦帮忙看下吗?
FILE *fq;
void handler(int sig)
{
fq = fopen("/home/lee/www","a");
fprintf(fq,"Here!!!\n");
fclose(fq);
//exit(0);
}
int main()
{
pid_t pid = fork();
if(pid<0)
{
printf("error\n");
}
else if(pid == 0)
{
signal(SIGUSR1 , handler);
for(;;);
}
else
{
if(kill(pid,SIGUSR1)==0)
{
}
}
return 0;
}
复制代码
回复
2#
zsszss0000
作者:
action08
时间:
2015-03-10 22:33
看你代码,不知道你想要干啥,api基础还不够啊
作者:
windoze
时间:
2015-03-10 23:31
man fork
如果没看明白就使劲看,直到看明白为止,然后写一篇不少于800字的读后感发过来。
作者:
hackmong
时间:
2015-03-11 10:36
回复
7#
windoze
可不可以麻烦说下我具体哪里出错……
作者:
www1862
时间:
2015-03-11 12:21
调用fuck()之后,系统先运行芭比还是北鼻是无法确定的,所以北鼻还没运行,就可能被芭比给塞回妈咪的肚子里了。
作者:
hackmong
时间:
2015-03-11 12:28
回复
9#
www1862
我知道了,谢谢!
作者:
flw
时间:
2015-03-11 12:45
kill( 0, SIGUSR1 );
作者:
windoze
时间:
2015-03-11 13:01
回复
8#
hackmong
不可以。
你要先看完man fork然后写完读后感我再告诉你。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2