我有一個嵌入式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/);它有一個關於流程的好章節。 –