最近遇到一个问题: 有两个独立进程a和b,实现a进程关闭b进程. 用C语言写,谢谢。 10
2个回答
展开全部
楼上程序虽然简洁,但是用kill杀掉另外一个进程,小弟弟我不推荐,这样会使程序变得不可控,进程本来就是不可控的东西。我建议设置一个公共变量,用互斥锁锁起来,这个进程给另外一个进程发出退出命令,最好的方法就是修改这个变量的值,另外一个进程在安全的地方加入这个值的检测,发现值被改变了,就安全退出。代码不写了,把楼上的高手的程序改改就行,很简单
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
void b(void)
{
while(1)
{
printf("In b:%d . . .\n",getpid());
sleep(1);
}
}
void a(pid_t pid)
{
printf("In a:%d . . .\n",getpid());
sleep(3);
kill(pid,SIGKILL);
printf("%d Killed . . .\n",pid);
}
int main(void)
{
pid_t pid;
if((pid=fork())==0)
b();
if(fork()==0)
a(pid);
wait(NULL);
return 0;
}
#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
void b(void)
{
while(1)
{
printf("In b:%d . . .\n",getpid());
sleep(1);
}
}
void a(pid_t pid)
{
printf("In a:%d . . .\n",getpid());
sleep(3);
kill(pid,SIGKILL);
printf("%d Killed . . .\n",pid);
}
int main(void)
{
pid_t pid;
if((pid=fork())==0)
b();
if(fork()==0)
a(pid);
wait(NULL);
return 0;
}
追问
亲,是在linux下运行的?
追答
是
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询