如何在已经运行的C程序中传递命令

如何在已经运行的C程序中传递命令,c,command,C,Command,因此,如果要在启动程序时解析命令行选项,请使用getopt()。但是,如果程序已经在后台运行,你怎么做呢?我找不到信息。例如,假设您有一台正在运行的服务器,但您希望更改它的工作方式。怎么做?我想在Linux中做到这一点。没有独立于平台的方法;C编程语言没有指定(或要求存在)与正在运行的程序对话的机制 您将不得不寻找特定于平台的代码,或者一些现有的库,它们将平台抽象为自己的可移植的东西 在Linux中,a是实现这一点的一种方法。另一个是共享内存。没有独立于平台的方法来实现这一点;C编程语言没有指定

因此,如果要在启动程序时解析命令行选项,请使用getopt()。但是,如果程序已经在后台运行,你怎么做呢?我找不到信息。例如,假设您有一台正在运行的服务器,但您希望更改它的工作方式。怎么做?我想在Linux中做到这一点。

没有独立于平台的方法;C编程语言没有指定(或要求存在)与正在运行的程序对话的机制

您将不得不寻找特定于平台的代码,或者一些现有的库,它们将平台抽象为自己的可移植的东西


在Linux中,a是实现这一点的一种方法。另一个是共享内存。

没有独立于平台的方法来实现这一点;C编程语言没有指定(或要求存在)与正在运行的程序对话的机制

您将不得不寻找特定于平台的代码,或者一些现有的库,它们将平台抽象为自己的可移植的东西


在Linux中,a是实现这一点的一种方法。另一个是共享内存。

如果你在Un*x上,你就有了


FIFO管道看起来合理且易于实现:)

如果您使用的是Un*x,那么您可以使用它


FIFO管道看起来合理且易于实现:)

有几种方法可以做到这一点,但它们都有一个共同的主题-进程间通信

我的首选方法是通过某种套接字(通常现在我使用ZMQ来实现这些目的,但如果您刚开始使用,请在使用ZMQ之前通读一下套接字)。取决于您是在Windows上还是在某种Unix上,将决定您可以使用哪种套接字


还有其他方法可以做到这一点,比如共享内存,但套接字是最好的选择,特别是因为您提到了“服务器”。我建议您研究“客户机-服务器模型”。

有几种方法可以做到这一点,但它们都有一个共同的主题-进程间通信

我的首选方法是通过某种套接字(通常现在我使用ZMQ来实现这些目的,但如果您刚开始使用,请在使用ZMQ之前通读一下套接字)。取决于您是在Windows上还是在某种Unix上,将决定您可以使用哪种套接字


还有其他方法可以做到这一点,比如共享内存,但套接字是最好的选择,特别是因为您提到了“服务器”。我建议您研究“客户机-服务器模型”。

我使用的服务器最简单的解决方案是制作文件,并要求服务器每10秒读取一次文件。把命令放在那里。这是跨平台的)。

第二个或多或少的跨平台解决方案是使用一些标准库并发(例如,pToX),或者使用C++(线程和互斥LIB)的新标准。使线程等待一些命令,而另一个线程将执行某些命令。

我使用的服务器最简单的解决方案是生成文件,并要求服务器每10秒读取一次文件。把命令放在那里。这是跨平台的)。

第二个或多或少的跨平台解决方案是使用一些标准库并发(例如,pToX),或者使用C++(线程和互斥LIB)的新标准。使线程等待一些命令,而其他线程将执行某些命令。

您可以使用配置文件,让程序侦听对该文件的更改

如果您在Linux中编程,可以使用inotify(
#include

在MacOS/iOS中,使用FSEvents


在Windows中使用。

您可以使用配置文件,并让程序侦听对该文件的更改

如果您在Linux中编程,可以使用inotify(
#include

在MacOS/iOS中,使用FSEvents


<>在Windows使用.< /P> BTW中,您可以考虑使程序成为专用HTTP服务器(例如使用像……的一些HTTP服务器库);然后你的用户可以打开一些特殊的URL来与你的程序进行通信。BTW,你可以考虑让你的程序成为一个专门的HTTP服务器(例如使用一些像……的HTTP服务器库);然后您的用户可以打开一些特殊的URL与您的程序进行通信。