Gammu smsd runonreceive返回0,但没有程序输出
Gammu-smsd runonreceive returns 0 but no program output
我编写了一个C应用程序,它可以获取一些传感器数据并将其放入字符串中。此字符串被传递给gammu-smsd-inject以供smsd传输。作为参考,我的应用程序使用fork()&wait()。程序等待gammu-smsd注入终止,然后自行退出。
我的程序运行得很好:如果我从bash提示符手动运行它,它会获取传感器数据,调用gammu-smsd-inject并退出。短信出现在数据库发件箱中,在我收到手机短信后不久。
我已经将程序的绝对路径添加到SMSD的runonreceive指令中。当我向SMSD发送文本时,它会在收件箱中收到,从日志文件中我可以看到运行我的程序的守护程序。然后,日志文件声明进程(我的程序)已成功退出(0),但我从未收到任何短信,也没有向数据库的发件箱或sentems表添加任何内容。
知道可能发生了什么吗?我还没有发布代码清单,因为它很长,但它是可用的。
我唯一能想到的可能会发生的是,gammu-smsd注入可能在有机会执行任何SQL操作之前就被终止了(由树上某个父进程终止)。这难道不会创建一个非零退出代码吗?
所以问题是哪个用户在运行程序。当我从bash手动运行我的应用程序时,它会使用我的用户ID启动它,但当SMSD守护进程运行它时,它使用不同的ID启动,这出于某种原因导致了问题。我认为这是用于访问mysql数据库的用户ID的问题,但显然不是。简言之,我实际上并不知道问题出在哪里,但通过将登录名的UID分配给子进程,一切都突然正常了。
相关文章:
- 如何从Windows应用程序输出到标准?
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 而循环:简单的除法程序输出零,不明白为什么
- Qt creator 4.11,在应用程序输出面板中创建一个链接
- 使用复制构造函数的程序输出错误
- 为什么Qt Creator的应用程序输出不能从spdlog记录器打印
- 为什么在 Direct X 11 中没有我的程序输出?
- 我怎样才能阻止我的程序输出时间,它使我的程序难以阅读
- 程序输出奇怪的字符
- 程序输出"nan"
- 为什么我的C++程序输出不同的数字来将米转换为英尺?
- 3D 纹理大小会影响程序输出,而不会引发错误
- C++,程序输出无效输入,但继续通过循环
- 如何连接C++和Excel(从C++程序输出到Excel电子表格)
- 为什么我的C 程序输出乱码代码
- QT小部件应用程序输出到控制台
- 混淆了具有虚拟继承的程序输出
- 为什么我的C++程序输出这个
- 为什么我的程序输出不断变化?EAX寄存器不断更改值