分享

精灵进程到底要不要屏蔽信号

 紫火神兵 2012-09-25
精灵进程到底要不要屏蔽信号编写精灵进程,apue上没有提到要处理信号,而网上有些教程说要屏蔽很多信号。
到底需要屏蔽这些信号吗?
下面是在网上看到的例子

void main(int argc, char ** argv){
time_t now;
int childpid, fd, fdtablesize;
int error, in, out;


signal(SIGTTOU,SIG_IGN);
signal(SIGTTIN,SIG_IGN);
signal(SIGTSTP,SIG_IGN);
signal(SIGHUP,SIG_IGN);


if( fork()!=0 ) exit(1);
if( setsid()<0 ) exit(1);


if( fork()!=0 ) exit(1);
if( chdir("/tmp")==-1 )exit(1);


for( fd=0, fdtablesize=getdtablesize(); fd< fdtablesize;fd++) close(fd);

umask(0);
signal(SIGCHLD,SIG_IGN);

syslog(LOG_USER|LOG_INFO,"守护进程测试http://www.!\n");
while(1){
time(&now);
syslog(LOG_USER|LOG_INFO,"当前时间:\t%s\t\t\n",ctime(&n

请教关于拷贝构造函数的一个问题

ow));
sleep(6);
}什么是精灵进程啊楼主是指后台守护进程吧。
有些信号是应该忽略的,我在Linux下忽略的信号是这些:
signal(SIGINT, SIG_IGN); // 中断键被按下
signal(SIGQUIT, SIG_IGN); // 停止键被按下
signal(SIGPIPE, SIG_IGN); //客户端没有按正常过程断开 (Socket程序必要)
//signal(SIGTERM, TerminateApplication); // 软件Kill,如果不想随便被kill,也可加此信号你想处理就处理,想忽略就忽略。
完全根据需要而定。上面那些信号都是和终端有关的信号,一般情况下都是由终端驱动程序发给当前程序的,既然已经没有控制终端了,所以说除了用户主动发送,再不会收到的信号不过是IPC的一种,看进程需求,这和是不是后台守护进程(“精灵进程”太别扭了)没关系。
话说 'coreutils'中也会屏蔽一些信号的倒,这才看见是06年的帖子,不要怪我顶起,我被楼上迷惑了:shutup:要的~在网络程序中 还是要屏蔽很多信号 比如 管道错误

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多