我寫了一個C應用程序,它捕獲一些傳感器數據並將其放入一個字符串中。這個字符串被傳遞給gammu-smsd-inject以通過SMSD進行傳輸。作爲參考,我的應用程序使用fork()& wait()啓動gammu-smsd-inject。程序等待gammu-smsd-inject終止,然後退出。Gammu-smsd runonreceive返回0,但沒有程序輸出
我的程序工作得很好:如果我從bash提示符手動運行它,它抓住傳感器數據,調用gammu-smsd-inject並退出。短信出現在數據庫發件箱中,並在我的手機上收到短信後不久。
我已經將我的程序的絕對路徑添加到了SMSD的runonreceive指令中。當我向SMSD發送文本時,它會在收件箱中收到,並從日誌文件中看到運行我的程序的守護進程。然後日誌文件聲明進程(我的程序)成功退出(0),但我從來沒有收到任何短消息,也沒有任何內容添加到數據庫的發件箱或sentitems表中。
任何想法可能會發生什麼?我還沒有發佈代碼清單,因爲它很長,但它是可用的。
唯一能想到的情況就是gammu-smsd-inject可能會被終止(通過樹上的某個父進程),在它有機會做任何SQL的事情之前。這不會創建一個非零的退出代碼嗎?
請不要將「已解決」添加到標題中。表明你的問題已經解決的方法是接受一個答案。如果你自己找到答案,那麼發佈自己的答案並接受答案是完全可以的。 – 2014-11-02 23:04:11