精灵进程到底要不要屏蔽信号编写精灵进程,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.3wanmei.com!\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:要的~在网络程序中还是要屏蔽很多信号 比如 管道错误
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。