标签:background-process daemon linux c-4
我目前正在尝试使用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;
}
标签:background-process,daemon,linux,c-4 来源: https://codeday.me/bug/20191118/2031700.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。