0
我有需要運行其他程序的程序。它從正常的終端會話運行時工作正常。當使用initscript運行時,它不會獲得正常的shell環境,大多數程序都會失敗。那麼我怎麼才能讓它和initscript一起工作呢?獲取使用execle的shell環境
vixie-cron似乎使用execle()並將envp作爲參數傳遞。但我很難弄清楚它是如何得到shell env設置的。
這裏是一個正確不工作與初始化腳本當前代碼:
pid = fork();
if (pid < 0) {
exit(EXIT_FAILURE);
} else if (pid == 0) {
execl("/bin/sh", "/bin/sh", "-c", cmd, (char *) NULL);
exit(EXIT_FAILURE);
}
編輯:一件怪事發生。現在相同的程序即使在初始化腳本啓動時也可以正常運行。對不起,這是一個沒用的問題。反正我得到了很好的答案。謝謝你的幫助。
什麼是不工作?什麼是錯誤?你爲什麼不在你的代碼中報告錯誤?這似乎是面對意外行爲時所做的第一件事情...... –
(shell)環境可能很大程度上取決於運行進程的用戶。你檢查過了嗎? – alk
獲取環境變量的常用方法是調用getenv()。這可能是你看不到的。 –