什麼是在其運行時獲得的外殼知道到C二進制應用價值的最佳解決方案?獲取參數C應用程序通過shell命令
C應用程序與第三方產品通信,並將它實際設置。 但是,一些設置在OS直接更改,所以我想從外殼到影響,改變,在C應用這些變量使用某些命令。
你知道實現它(使用變量,管道,或也許其他不同的東西)某種方式?
我看着全局變量,但即使我改變全局變量的值,它在其中運行的所有時間的C程序沒有任何影響。 (我使用函數getenv())。
什麼是在其運行時獲得的外殼知道到C二進制應用價值的最佳解決方案?獲取參數C應用程序通過shell命令
C應用程序與第三方產品通信,並將它實際設置。 但是,一些設置在OS直接更改,所以我想從外殼到影響,改變,在C應用這些變量使用某些命令。
你知道實現它(使用變量,管道,或也許其他不同的東西)某種方式?
我看着全局變量,但即使我改變全局變量的值,它在其中運行的所有時間的C程序沒有任何影響。 (我使用函數getenv())。
最長時間運行的進程(亦稱守護進程)有某種配置文件(例如/etc/mydaemon.conf
)它們讀取(和評價)
HUP
信號。所以最簡單和衆所周知的方法是在C應用程序中安裝信號處理程序並捕獲SIGHUP信號。這當然需要對C應用程序進行更改。
以觸發殼重讀你可以使用這些命令一個:
kill -HUP PID_OF_MY_PROCESS
pkill -HUP name_of_my_process
進程啓動後不能更改環境變量。它們被繼承到過程中,但是一旦發生這種情況,值就不能從過程之外改變。
查找到的所有inter-process communication通常的方法,如(像你提到)插座,管道在Unix上,共享內存等
出了什麼問題'stdin'? – cnicutar 2012-02-21 12:25:08
您的帖子中最相關的信息僅在一個獨立條款中提及:「女巫[原文如此!]一直在運行」。 – 2012-02-21 12:27:25
是的,我很抱歉,那個超級... ...有趣 – srnka 2012-02-21 12:44:27