我正在尝试在Unix中编写守护进程。我理解如何使守护程序启动并运行的部分。现在,如果将命令定位到守护进程,我希望守护进程在shell中键入命令时进行响应。
例如:
让我们假设守护进程名称是“mydaemon”
在终端1中输入mydaemon xxx。 在终端2中输入mydaemon yyy。
“mydaemon”应该能够接收参数“xxx”和“yyy”。
答案 0 :(得分:1)
如果我正确地解释了您的问题,那么您必须将其作为应用程序级构造。也就是说,这是您自己编写代码的程序所特有的。
我将采用的方法是编写“mydaemon”,并将其作为包装器:它检查进程表或pid文件以查看“mydaemon”是否已在运行。如果没有,那么fork / exec你的新守护进程。如果是,则将参数发送给它。
对于“向它发送参数”,我会使用命名管道,如下所述:What are named pipes?基本上,您可以将命名管道视为“stdin”,除非它们显示为文件系统的其余部分,因此您可以在运行的“mydaemon”中打开它们并检查它们的输入。
最后,应该注意的是,所有这些check-if-running-send-to-pipe的东西都可以在您的守护程序中使用* nix OS的API完成,或者可以在脚本使用例如'ps','echo'等......