Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;将参数传递给已在运行的程序_C++ - Fatal编程技术网

C++ C++;将参数传递给已在运行的程序

C++ C++;将参数传递给已在运行的程序,c++,C++,我正在阅读关于使用语音命令控制应用程序的教程,在控制节奏盒的示例中,它建议可以执行以下命令: rhythmbox-client --play rhythmbox-client --pause 为什么这不只是打开程序的一个新实例,我如何在自己的程序中模拟功能?例如,如何将字符串传递给程序的特定实例 谢谢有几种技术可以只运行一个应用程序实例。在这些术语中,调用yyy--play通常与 INSTANCE = GET_RUNNING_INSTANCE() IF INSTANCE == NULL

我正在阅读关于使用语音命令控制应用程序的教程,在控制节奏盒的示例中,它建议可以执行以下命令:

rhythmbox-client --play
rhythmbox-client --pause
为什么这不只是打开程序的一个新实例,我如何在自己的程序中模拟功能?例如,如何将字符串传递给程序的特定实例


谢谢

有几种技术可以只运行一个应用程序实例。在这些术语中,调用
yyy--play
通常与

INSTANCE = GET_RUNNING_INSTANCE()
IF INSTANCE == NULL
   INSTANCE = CREATE_NEW_INSTANCE()
SEND_MESSAGE(INSTANCE, PLAY)

Rhythmbox使用进程间通信来实现这类功能,这可以通过多种不同的方式实现。其中之一就是像Rhythmbox一样使用D-Bus

使用D-Bus并不容易,但基本思想是在D-Bus中注册应用程序,以便其他应用程序可以调用不同的过程来导出应用程序(例如播放/停止操作),然后在同一应用程序中实现客户端。这样,如果传递了像
--play
这样的参数,则不运行常规代码,只需检查正在运行的应用程序的实例,并向已经运行的程序发送命令

另一方面,当没有传递任何参数时,程序只是启动并注册适当的触发器,以便稍后调用的实例可以控制它

这是一个关于dbus的

例如,如何将字符串传递给程序的特定实例

您需要使用操作系统提供的任何进程间通信设施。例如,套接字或命名管道或消息