有沒有一種安全的方式或者我怎麼能保證常見的做法,我有execvp
執行兒童生活在一個良好的狀態?如何確保兒童在執行通話後生活?
例如:我讓我的程序的用戶爲程序中的某些數據選擇自定義處理器(可以說他想用bzip2 -zc -
來處理它們)。我創建這個過程與通常fork()
,execvp()
併爲每個標準輸入,輸出和錯誤一個pipe(), dup2()
。但是我不能影響用戶是否給了我一個正確的命令調用或者因爲某些參數錯誤而死的東西(例如,他可能會給我cat foo
但foo文件不存在,因此cat會立即退出)。
我可以以某種方式確保我執行該用戶命令至少要經過之前,我開始與輸入餵養它是在一個良好的狀態 - 等待我的輸入 - 而不是已經死亡或正在死亡?
檢查您的寫入是否成功。如果管道另一端的孩子沒有讀取任何數據而死亡,則寫入將失敗,您將(通常)獲取SIGPIPE和SIGCHLD。 –