因此,如果要在启动程序时解析命令行选项,请使用getopt()。但是如果程序已经在后台运行,你是如何做到这一点的呢?我找不到信息。例如,假设你有一台服务器正在运行,但是你希望以它的工作方式改变一些东西。怎么做?我想在Linux中这样做。
答案 0 :(得分:2)
没有与平台无关的方法; C编程语言没有指定(或要求存在)与正在运行的程序交谈的机制。
您将不得不寻找特定于平台的代码,或者某些将平台抽象为可移植的代码的现有库。
在Linux中,Unix domain socket是实现此目的的一种方式。另一个是共享内存。
答案 1 :(得分:1)
如果您使用的是Un * x,则会many options。
FIFO管道看起来合理且易于实现:)
答案 2 :(得分:1)
有几种方法可以做到这一点,但它们都有一个共同的主题 - 进程间通信。
我这样做的首选方法是通过某种套接字(通常这些天我会将ZMQ用于这些目的,但是如果你开始使用,请在使用ZMQ之前阅读套接字) 。根据您是否在Windows或某种Unix上,您将决定您可以使用哪种插槽。
还有其他方法可以做到这一点 - 例如共享内存,但是套接字是你最好的选择,特别是因为你提到了" server"。我建议你学习"客户端服务器模型"。
答案 3 :(得分:0)
我使用的服务器最简单的解决方案是生成文件并要求服务器在10秒内读取文件一次。把命令放在那里。那是跨平台) 第二个或多或少的跨平台解决方案是使用一些标准库进行并发(例如pthread),或使用新标准的C ++(线程和互斥库)。创建将等待某些命令的线程,而其他命令将执行某些操作。
答案 4 :(得分:0)
您可以使用配置文件并让程序侦听对该文件的更改。
如果您使用Linux进行编程,则可以使用inotify(#include <linux/inotify.h>
)。
在MacOS / iOS中使用FSEvents。
在Windows中使用FindFirstChangeNotification。