通过shell命令获取C应用程序的参数

时间:2012-02-21 12:22:21

标签: c bash shell

在运行时期间将shell中已知的值导入C二进制应用程序的最佳解决方案是什么?

C应用程序与第三方产品通信并向其发送实际设置。 但是一些设置在OS中直接更改,所以我想使用shell中的一些命令来影响,更改C应用程序中的这些变量。

你知道实现它的一些方法(使用变量,管道,或者其他不同的东西)?

我查看了全局变量,但即使我更改了全局变量值,它对于一直运行的C应用程序也没有影响。 (我使用了函数getenv())。

2 个答案:

答案 0 :(得分:5)

Unix中大多数长时间运行的进程(也称为。守护进程)都有某种配置文件(例如/etc/mydaemon.conf),它们可以读取(并评估)

  • 在启动时(当然)
  • 当他们收到HUP信号时。

因此,最简单和众所周知的方法是在C app中安装信号处理程序并捕获SIGHUP信号。这当然需要更改C app。

要在shell中触发重读,您可以使用一个这些命令:

kill -HUP PID_OF_MY_PROCESS
pkill -HUP name_of_my_process

答案 1 :(得分:1)

启动进程后无法更改环境变量。它们被继承到流程中,但一旦发生这种情况,就无法从流程外部更改这些值。

查看inter-process communication的所有常用方法,例如(如你所述)套接字,管道,共享内存等。