系统相关
首页 > 系统相关> > c-如何控制后台进程/守护进程

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

作者:互联网

我目前正在尝试使用Linux的C语言创建程序,但我对此还很陌生.该程序应在后台执行其内容(网络通信和计算),并可以通过终端的命令进行控制,例如“ prog -start”,“ prog -stop”,“ prog -limitUp 1000”.

我的想法是将程序创建为始终在后台运行的守护程序.为了控制整个过程,我想设置一个Linux命令,该命令将给定参数传递给程序的主要功能,并尝试在后台重新连接到守护程序以执行给定命令.

实现此类功能的最佳方法是什么(即后台监听守护程序以及可用于控制它的客户端/命令).

解决方法:

这是使用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;
}

enter image description here

标签:background-process,daemon,linux,c-4
来源: https://codeday.me/bug/20191118/2031700.html