c - 通过命令行向程序发送消息

标签 c architecture command-line io

我有这个程序,我们称之为主机。 Host 可以做各种好事,但它需要能够在运行时 通过命令行接受输入。这意味着它必须以某种方式发送其他进程数据,然后退出。例如,我需要能够做到这一点:

./Host --blahblah 3 6 3 5

这应该以某种方式结束调用 Host 中的一些函数

handleBlahBlah(int x1, int y1, int x2, int y2){
  //do some more sweet stuff
}

Host是一个C程序,不需要支持多实例。

这方面的一个例子是 Amarok 音乐播放器。随着 Amarok 的运行和播放,您可以输入“amarok --pause”,它会暂停音乐。

我需要能够在 Linux 或 Windows 中执行此操作。最好是 Linux。

什么是最简洁的实现方式?

最佳答案

如果您使用的是 Windows,我会告诉您使用隐藏窗口来接收消息,但由于您使用了 ./,我假设您需要基于 Unix 的东西。

在那种情况下,我会选择 named pipe . Sun 有一个 tutorial关于可能有用的命名管道。

该程序可能会创建管道并进行监听。您可以有一个单独的命令行脚本,它会打开管道并将其命令行参数回显给它。

可以修改您的程序以支持命令行发送,而不是使用单独的脚本。在那种情况下,你会做同样的基本事情。您的程序会查看它的命令行参数,如果适用,打开到程序“主”实例的管道,并通过它发送参数。

关于c - 通过命令行向程序发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10443/

相关文章:

java - "$CP"在此 java 命令行中意味着什么?

unix - 我该如何为 Unix 命令行执行 "-"* 60

c - C是否需要堆栈和堆才能运行?

c - 每次编译参数返回不同的值

.net - 扩展/插件通信架构

c# - 尝试让 main/form1 以外的类相互交互是不是一种不好的形式?

linux - 为什么我不能从符号链接(symbolic link)中处理 ".."中的文件?

c - 声明具有不同类型的结构体属性

c - "fork()"后printf异常

asp.net-mvc - 在 ASP.NET MVC 中将实体映射到模型并执行业务逻辑