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