我写了一个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