我從我的C程序中調用make,這個實習生執行另一個程序。我將標準輸出和標準錯誤都重定向到一個文件。但是,當由make運行的程序由於分段錯誤而終止時,會生成一個核心轉儲並將其打印到正在調用make的主程序的控制檯(標準輸出)。coredump重定向到文件
我該如何解決這個問題,而不是在控制檯上顯示核心轉儲?
以下是我的代碼來調用make:
int pid = fork();
if(pid==0){
dup2(make_logs, 1);
dup2(make_logs, 2);
close(make_logs);
execvp (args[0],args);
}
哪裏make_logs是用「開放」
感謝
打開的文件
請確認從命令行運行程序(或任何其他程序)沒有相同的問題。 – Keith
是的,我可以確認,如果運行相同的程序,則存在覈心轉儲。但是,我不明白的是,因爲標準輸出和錯誤都被重定向,所以這應該被寫入文件並且不會被傳播到父進程。 – user1479589
如果你用'strace -f'在這裏運行你的程序,會看到進程的所有系統調用,並查看傳播的內容和方式。 – nos