例如,計劃的a.out:如何獲取系統調用調用的程序退出代碼?
int main()
{
return 0x10;
}
計劃B.OUT:
int main()
{
if(system("./a.out") == 0x10)
return 0;
else
return -1;
}
根據cppreference的system()
返回值是實現依賴。因此,程序b.out的嘗試顯然是錯誤的。
在上面的情況下,我怎樣才能得到0x10
而不是一個未確定的值? 如果系統調用不是正確的工具,那麼執行此操作的正確方法是什麼?
這是實現定義的,這意味着你需要查找的* UNIX或UNIX例如文檔般的環境*'男人system'會告訴你你需要的細節。 –
請參閱http://stackoverflow.com/questions/2667095/c-how-can-i-get-return-value-of-command-passed-to-execl – usr2564301
「系統」對此有點沉重。你真的想爲此啓動一個shell嗎?如果調用代碼每次都以root身份運行,或者在奇怪的環境中運行,那麼這就是安全禁止。 –