阅读:2243回复:4
请教偶这个demo程序如何结束子进程阿
demo程序中:
父进程打开设备,然后创建子进程 子进程read设备,如果没有中断发生,read一直sleep(驱动中实现)) 父进程在子进程结束前什么也不做,当子进程结束后,父进程关闭设备 程序大概就是这样,请问有什么办法能让子进程终止阿(无中断状态下)? 尝试过SIGKILL、SIGTERM,都不行,郁闷了..... 代码大意如下: SIGINT的处理函数catch_int中仅仅让全局变量exit_flag=1 fd=open();//代开设备 signal(SIGINT, catch_int); if((pid=fork())<0) { printf("can't create child!\n"); exit(1); } else if(pid==0) { signal(SIGINT,SIG_DFL); while(exit_flag==0) { read();//如果没有中断发生,read调用会一直sleep(驱动中实现) } } else { printf("child pid:%d\n",pid); while(exit_flag==0) ; kill(pid,SIGKILL);//问题就在这里,到底该如何结束子进程呢? waitpid(-1,&status,0); } close(fd);// 关闭设备 |
|
沙发#
发布于:2007-06-22 16:25
发送消息给子进程,子进程处理该消息就是exit(0).看看是否成功。
|
|
|
板凳#
发布于:2007-07-26 22:02
驱动中的sleep应该是可中断的
|
|
地板#
发布于:2007-08-24 21:59
在主程序里面 等待子程序结束信号发生
|
|
|
地下室#
发布于:2007-08-24 22:07
简单实例
主程序里面 调用 等SIGCHLD 信号发生 signal(SIGCHLD,sigchl_handler); 在子程序里面调用exit(0);结束子程序 在子程序结束时会传递给主程序SIGCHLD的信号。 |
|
|