在运行时期间将shell中已知的值导入C二进制应用程序的最佳解决方案是什么?
C应用程序与第三方产品通信并向其发送实际设置。 但是一些设置在OS中直接更改,所以我想使用shell中的一些命令来影响,更改C应用程序中的这些变量。
你知道实现它的一些方法(使用变量,管道,或者其他不同的东西)?
我查看了全局变量,但即使我更改了全局变量值,它对于一直运行的C应用程序也没有影响。 (我使用了函数getenv())。
答案 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的所有常用方法,例如(如你所述)套接字,管道,共享内存等。