c守护程序运行时shell参数

时间:2015-07-17 13:10:44

标签: c ipc daemon

我开发了一个可以通过shell命令控制的守护进程。 只是为了澄清让我们说守护进程将有三个函数(我想要的调用):

$ myDaemon start #do nothing,just daemonize。 exit(0)成功,否则退出(1)

$ myDaemon停止#ask守护进程停止。 exit(0)成功,否则退出(1)

$ myDaemon doSomething #ask守护进程。 exit(0)是成功,否则退出(1)(假设守护进程执行int a = 0;退出(0);只是为了查看代码,对特殊内容不感兴趣)

任何人都可以告诉我一个关于如何制作这个守护进程的例子(好吧,开始真的很简单......)?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

如果你真的想让一个守护进程完成所有的工作,那么一种方法是编写一个终端程序,通过一些IPC技术将所有命令从终端传递给守护进程。

您所要做的就是:

  • 编写一个终端程序,该程序分叉然后执行该守护程序以及命令行参数(如果使用管道,则为文件描述符)。
  • 终端程序然后从终端接收while循环输入,并通过使用的IPC机制将它们传递给守护进程。

修改

主要流程的算法

main()
{
    > fork the daemon with some initial arguments(if any)
    while(1)
    {
        > take inputs from the shell
        > parse the input and pass it to daemon(via preferred mechanism)
        > if(exit condition) kill->daemon and break
    }
}

守护进程

main() (or function_name() if no execl)
{
    > initialize the arguments and IPC mechanism
    while(1)
    {
        > read command(can use simple integer/character commands)
        > perform requested action or break if exit command
    }
    > proper exit(closing file descriptors,etc.)
}