2

我正在尝试在 Unix 中编写一个守护进程。我了解如何使守护程序启动并运行的部分。现在我希望守护程序在我在 shell 中键入命令时响应,如果它们是针对守护程序的。

例如:

让我们假设守护进程名称是“mydaemon”

在终端 1 中,我输入 mydaemon xxx。在终端 2 中,我输入 mydaemon yyy。

“mydaemon”应该能够接收参数“xxx”和“yyy”。

4

1 回答 1

1

如果我正确解释了您的问题,那么您必须将其作为应用程序级构造来执行。也就是说,这是特定于您的程序的东西,您必须自己编写代码。

我将采用的方法是编写“mydaemon”,并将其作为包装器:它检查进程表或 pid 文件以查看“mydaemon”是否已经在运行。如果没有,那么 fork/exec 你的新守护进程。如果是这样,则将参数发送给它。

对于“将参数发送给它”,我会使用命名管道,如下所述:什么是命名管道?本质上,您可以将命名管道视为类似于“stdin”,除了它们对系统的其余部分显示为文件,因此您可以在运行的“mydaemon”中打开它们并检查它们的输入。

最后,应该注意的是,所有这些 check-if-running-send-to-pipe 的东西都可以在你的守护程序中使用 *nix OS 的 API 完成,或者可以在脚本中使用例如“ps”、“echo”等...

于 2012-11-06T03:38:47.360 回答