如何启动一个守护进程。

legone2008 2008-10-09 06:43:47
环境:RHEL as4 + oracle 9i + C语言
我有多个服务进程是常驻进程(比如说进程名叫:SRV1,SRV2,SRV3),其父进程id是1,此进程不能作业孙进程启动。

现在我想用C写程序来启动SRV1,SRV2,SRV3,请高手帮忙实现下。
注:不能用system系统调用

我想用execl家族实现,
...全文
323 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
legone2008 2008-10-10
  • 打赏
  • 举报
回复
是这样的,我的SRV进程都有一套检测机制,就是检测进程是否已经启动,SRV启动时会检查在系统进程中是否有该进程id,并且它的父进程ID是1,如果检测到,说明该进程已经启动,则再次启动失败。
我用fork来启动子进程,在子进程中用调用execl来启动SRV,我看了一下,当execl启动一个新的进程替换原来的子进程后,新进程的父进程id就变成1了,如此在SRV启动时就会检测到进程已经启动(execl启动的进程ID存在,并且父进程为1)。
所以fork+execl实现失败。
不知道我表述清楚没有?
请问一下,不用fork,直接用exec如何实现?我要求的exec每次只能启动一个进程。
richboy 2008-10-10
  • 打赏
  • 举报
回复
不就是要检测进程是否已经启动了吗?
有很多种其它的方法来做到啊,

1) 用共享内存来维护一个变量
2) 读写文件
3) 消息机制
...
wlabing 2008-10-10
  • 打赏
  • 举报
回复
调用exe函数可完成,调不调用fork看你的需要了.
iasky 2008-10-09
  • 打赏
  • 举报
回复
fork一个子进程,然后父进程结束。
xxgamexx 2008-10-09
  • 打赏
  • 举报
回复
它是要启动进程吧

楼上的回答是不是偏题了?
playmud 2008-10-09
  • 打赏
  • 举报
回复
man daemon
man fork
littlefirebug 2008-10-09
  • 打赏
  • 举报
回复
先fork3个进程出来,每个进程调用exec,在杀死主进程。

这时候这三个进程就是父进程id=1的进程了

此进程不能作业孙进程启动 这句话什么意思?

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧