如何控制后台进程/守护进程

我目前正在尝试在C ++中为Linux创build一个程序,我对它很陌生。程序应该在后台完成它的工作(networking通信和计算),并可以使用terminal的命令进行控制,例如“prog -start“,”prog -stop“,”prog -limitUp 1000“。

我意识到这一点是创build程序作为一个守护进程,总是在后台运行。 为了控制整个事情,我想设置一个Linux命令,将给定的parameter passing给我的程序的主函数,然后尝试重新连接到后台的守护进程,然后执行给定的命令。

实现这种function的最好方法是什么(例如,在后台监听一个守护进程以及可以用来控制它的客户/命令)。

这是一个用C ++ / Qt构建的示例程序。 正如你所看到的,如果没有给出任何参数,这个进程将作为守护进程启动,监听一个命名的本地套接字。

如果给出参数,它连接到本地套接字,并发送它的参数。 守护进程然后打印它们。

#include <QCoreApplication> #include <QLocalserver> #include <QLocalSocket> #include <QStringList> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); if (a.arguments().size() == 1) { // Act as a server. QLocalserver server; server.listen("MyDaemon"); while (server.waitForNewConnection(-1)) { QLocalSocket *socket = server.nextPendingConnection(); socket->waitForReadyRead(); qDebug() << "received message" << socket->readAll(); delete socket; } } else { // Act as a client. QLocalSocket socket; socket.connectToserver("MyDaemon"); socket.waitForConnected(); socket.write(a.arguments().join(' ').toUtf8() + "\n"); socket.waitForBytesWritten(); } return 0; } 

在这里输入图像描述