2012-02-21 31 views
1

什麼是在其運行時獲得的外殼知道到C二進制應用價值的最佳解決方案?獲取參數C應用程序通過shell命令

C應用程序與第三方產品通信,並將它實際設置。 但是,一些設置在OS直接更改,所以我想從外殼到影響,改變,在C應用這些變量使用某些命令。

你知道實現它(使用變量,管道,或也許其他不同的東西)某種方式?

我看着全局變量,但即使我改變全局變量的值,它在其中運行的所有時間的C程序沒有任何影響。 (我使用函數getenv())。

+0

出了什麼問題'stdin'? – cnicutar 2012-02-21 12:25:08

+0

您的帖子中最相關的信息僅在一個獨立條款中提及:「女巫[原文如此!]一直在運行」。 – 2012-02-21 12:27:25

+0

是的,我很抱歉,那個超級... ...有趣 – srnka 2012-02-21 12:44:27

回答

5

最長時間運行的進程(亦稱守護進程)有某種配置文件(例如/etc/mydaemon.conf)它們讀取(和評價)

  • 在(
  • 當然)啓動,當他們收到一個HUP信號。

所以最簡單和衆所周知的方法是在C應用程序中安裝信號處理程序並捕獲SIGHUP信號。這當然需要對C應用程序進行更改。

以觸發殼重讀你可以使用這些命令一個

kill -HUP PID_OF_MY_PROCESS 
pkill -HUP name_of_my_process 
1

進程啓動後不能更改環境變量。它們被繼承到過程中,但是一旦發生這種情況,值就不能從過程之外改變。

查找到的所有inter-process communication通常的方法,如(像你提到)插座,管道在Unix上,共享內存等