1. 程式人生 > >windows下system函式返回值

windows下system函式返回值

Linux和Windows中system的不同之處在於:如果子程式呼叫成功,但執行失敗時,Linux下的system函式返回該子程序的返回值,而Windows下的system函式返回0,不是返回該子程序返回值,也無法得到該子程序返回值,所以用CreateProcess函式和GetExitCodeProcess函式代替。
改造方法如下:
1) 使用SetStdHandle函式改變STD_OUTPUT_HANDLE的值(把標準輸出重定向到指定的檔案)。
2) 使用GetStdHandle函式得到STD_OUTPUT_HANDLE的控制代碼(用來指定子程序的輸出位置)。
3) 設定STARTUPINFO結構(以siStartInfo為例),siStartInfo.dwFlags|= STARTF_USESTDHANDLES,siStartInfo.hStdOutput =(上步得到的控制代碼)。

4) 執行CreateProcess函式,建立子程序。
5) 執行WaitForSingleObject函式,等待子程序執行結束。(注:以INFINITE為第2個引數)
6) 執行GetExitCodeProcess函式,得到子程序的退出程式碼。