易截截图软件、单文件、免安装、纯绿色、仅160KB

linux下的deamon进程

设计一个linux下的deamon进程,关键只有几个:
1.fork两次。
2.fork第一次和第二次之间成为进程组头。
3.改变工作目录。
4.忽略信号。
5.设置读写掩码。
一下是一个从网络搜集到的例程,非常好的演示了上述要点,存此备忘。
#include
#include
#include
#include
void main(int argc, char ** argv)
{
time_t now;
int childpid, fd, fdtablesize;
int error, in, out;
/*忽略终端 I/O信号,STOP信号*/
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);
}
/*关闭打开的文件描述符,包括标准输入、标准输出和标准错误输出*/
fd=0;
for(fdtablesize=getdtablesize(); fd< fdtablesize;fd++)
{
close(fd);
}
umask(0);/*重设文件创建掩码*/
signal(SIGCHLD,SIG_IGN);/*忽略SIGCHLD信号*/
/*此处,可以做自己想做的服务例程代码。一般是一个死循环,如果要可以控制的退出的话,可以设置获取信号。下面示例一下一个写log的例程
*/
/*写log,测试结果*/
syslog(LOG_USER|LOG_INFO,"守护进程测试!\n");
while(1)
{
time(&now);
syslog(LOG_USER|LOG_INFO,"当前时间:\t%s\t\t\n",ctime(&now));
sleep(6);
}
}
上述程序在gcc4.0.1下编译通过,在fc4-2.6.11下稳定运行。
syslog将连接syslogd这个服务,在/var/log/message这个文件里面输出消息,所以需要启动syslogd服务。否则在/var/log/message这个文件里面不会有显示。


相关文档:

Linux iptable文档

总览
用iptables -ADC 来指定链的规

,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX ......

linux启动过程浅析(3)


这是本文得第三部分,在前两部分中,我已经讲述了Linux操作系统是如何被机器boot到,并且load到制定的内存地址的.我们将继续第二部分的内
容,看看操作系统在完成了bootsect.s和setup.s的运行后,在head.s中做了些什么.
让我们回忆一下,在setup.s中,我们把整个system模块从地址0x10000出往下移动了0x10000的距离,也就是说,现 ......

Linux下服务端程序性能优化

这个问题说起来可大可小,可长可短,基本都是自己切身的经验总结。
高爷爷说过"过早的优化是万恶之源",做开发不可能一开始就想着优化,应该从全局考量,从各个角度去思考,权衡利弊,做出一个
符合大局利益的设计,下来再考虑如何优化。
优化是在现有已成形的设计架构下,做的性能提升。假如你一开始就设计一个低性能的 ......

如何学习linux设备驱动

面对不断升级的内核,如何学习linux设备驱动
                                            ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号