设为首页 加入收藏

TOP

Linux进程控制编程与守护进程编写实例
2014-11-24 03:03:28 来源: 作者: 【 】 浏览:2
Tags:Linux 进程 控制 编程 守护 编写 实例

搞定了Linux进程控制编程,大体总结一下自己的体会:


1、Linux创建新进程唯一方法fork()调用,fork调用一次,一定返回两个值,返回值为0则在子进程中,返回值>0,这个返回值是子进程的Pid,说明在父进程中,因为父进程要控制子进程经常要用到子进程的pid,这样可以方便父进程的调用。


2、创建好了一个进程,它继承了父进程的整个地址空间,那怎么执行它呢?用exec函数族就OK了,这些函数在unistd.h头文件中定义了,明白l、v、e、p的含义就能轻松调用了。


4、最重要的是wait和waitpid,因为wait是waitpid的一个特例,这里就介绍waitpid,他主要是用在父进程中,等待子进程的退出,如果要求的子进程顺利退出,则返回子进程的pid,这个pid正好在父进程中用来判断用。常用pr=waitpid(pc,NULL,WNOHNAG)和pr=waitpid(pc,NULL,0)。前者表示子进程没有退出,则立即返回0,后者表示阻塞自己,知道等到子进程退出。


5、守护进程,就是一直在运行的后台进程。编写守护进程步骤:1.退出父进程。2.创建新对话。setsid。3.改变目录为根目录。chdir(‘\n’).4.用文件权限掩码将文件改为全部允许。mask(0)。5.关闭文件描述符。


6、因为守护进程在后台运行,已经脱离控制终端了,因此他的信息不能在控制终端显示,如用gdb调试,会显示program exited nalmally,显然因为父进程退出,控制终端已经与守护进程没有关系了。因此,守护进程的控制信息或者错误信息怎么显示给用户呢?这里用syslog服务,将错误信息显示到/var/log/messages中去。


最后给出编写一个守护进程的源代码,有兴趣的可以在Linux系统下演示。用tail -f /tmp/dameon.log查看结果


#include
#include
#include
#include
#include
#include
#include
#include
#define MAXFILE 65535
int main()
{
pid_t pc,sid;
int i,fd,len;
char *buf="This is a Dameon\n";
len=strlen(buf);
pc=fork();
if(pc0)
exit(0);
openlog("demo_updata",LOG_PID,LOG_DAEMON);
if((sid=setsid())


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linphone编译 : Linux 下 无Vide.. 下一篇使用Eclipse+GDB进行ARM板嵌入式L..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)