我有一个嵌入式linux项目,我用C++编写。拱门是手臂,处理器是一个飞思卡尔imx6。从C++应用程序中确定最后一个背景pid
我使用运行多个音频文件中的背景: 的sprintf(sysdev “GST-发射playbin2 URI =文件://%S音频宿=” “alsasink设备= ossmix” “&”,文件名) ; 然后执行:system(sysdev) 我也试过使用execvp。
当我看到$:的结果后!
这一切都在控制台中运行良好,但在C++程序中,$!没有返回结果。我实际上使用:echo $! result.dat将结果导入到在程序中读取的文件中。问题在于,在程序中,result.dat永远不会获取数据......而且很显然,这是因为$!没有返回任何东西。
我想这与环境有关。
首先,我的方法是否可行?
我非常新的Linux,但我的理解是,我不能“问题”一个PID的节目我跑,所以我唯一的选择是要弄清楚我一直在考虑,因为它们发生的人。
只需扫描PS的结果不会是足够的,因为有我可能需要在运行两次相同的声音的2的可能性。
预先感谢所有的智力。 克里斯
更新: 我得到它的工作。我使用了fork(),并且在子代中它简单地称为execlp()。 在家长,我登录了孩子的PID。 最后,我创建了一个线程,使用waitforpid(WNOHANG)监视所有分支的状态以保持信息更新。
阅读[高级Linux编程](http://advancedlinuxprogramming.com/);它有一个关于流程的好章节。 –