信号是unix中最古老的一种通信方式
2011-04-29 19:43
225 查看
用signal函数处理信号的小实例,两种注释,两种方法
信号集得函数还得慢慢写啊
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <wait.h>
/*void handler(int signum)
{
printf("===========\n");
wait(NULL);等待任何子进程
}*/
int main()
{
pid_t pid;
/*signal(SIGCHLD, handler);*/用函数处理子进程先退出的问题
pid = fork();
if(0 > pid)
{
perror("fork");
exit(-1);
}
else if( 0== pid)
{
printf("pid = %d %d\n", getpid(), pid );
raise(SIGABRT);//,子进程自己发送给自己进程结束,子进程先于父进程而亡
//成为僵尸进程
printf("child process exit ..... \n");
//sleep(1);//解决signal在子进程退出之前注册
exit(0);
}
else
{
//signal(SIGCHLD, SIG_IGN);//子进程中信号被忽略,以免引起僵尸进程
printf("pid = %d %d\n", getppid(), pid );
}
}
信号集得函数还得慢慢写啊
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <wait.h>
/*void handler(int signum)
{
printf("===========\n");
wait(NULL);等待任何子进程
}*/
int main()
{
pid_t pid;
/*signal(SIGCHLD, handler);*/用函数处理子进程先退出的问题
pid = fork();
if(0 > pid)
{
perror("fork");
exit(-1);
}
else if( 0== pid)
{
printf("pid = %d %d\n", getpid(), pid );
raise(SIGABRT);//,子进程自己发送给自己进程结束,子进程先于父进程而亡
//成为僵尸进程
printf("child process exit ..... \n");
//sleep(1);//解决signal在子进程退出之前注册
exit(0);
}
else
{
//signal(SIGCHLD, SIG_IGN);//子进程中信号被忽略,以免引起僵尸进程
printf("pid = %d %d\n", getppid(), pid );
}
}
相关文章推荐
- 【进程】进程通信-信号方式(中断)
- Linux\Unix IPC进程通信实例分析(一):共享内存通信---文件映射mmap方式
- flex与java的一种通信方式
- 远程通信的几种选择(RPC,Webservice, JMS的区别,其实都是SOA的一种实现方式)
- 【转】unix进程间的通信方式
- 西门子PLC一种基于TCP的FETCH/WRITE 通信方式
- c++thread学习(2) 线程之间通信的一种方式
- UNIX/Linux:向进程发信号的3种方式
- unix socket通信的方式
- Android activity 与 service 通信的一种方式
- UNIX再学习 -- XSI IPC通信方式
- unix进程间的通信方式
- 一种从机通信查询的方式,适用于嵌入式以及上位机的从机通信查询方式
- 【UNIX】什么是进程间FIFO通信以及信号通信
- unix进程通信方式总结(下)
- [原]iOS中 Web 页面与 Native Code 的一种通信方式
- unix进程间的通信方式
- MODBUS协议 一种问答方式的通信协议
- unix环境IPC通信之socket(三),tcp采用并发服务器编程实例,多进程方式 4000
- Linux进程间的通信方式:信号