windows下system函式返回值

2021-07-10 09:19:48 字數 806 閱讀 2194

在dos下,

system()只是做乙個呼叫其他程式的工作,只要呼叫成功就返回0,不成功就返回-1。

它不能得到被呼叫的程式的執行結果。

要得到其他程式的執行的結果,要用spawn***()這個家族的函式。

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函式,得到子程序的退出**。

如果你要判斷system是否執行成功,下面是一種方法: 

system("commond","arg",.....) == 0 or die ("出錯資訊") ; 

windows 下隱藏 system 函式彈窗

下面的程式是解決windows 下面呼叫 system 函式的時候,會有視窗彈出的問題 include brief 普通字元轉寬字元 param lpcszstr 普通字元 param lpwszstr 轉換後的寬字元 param dwsize 儲存寬字元的緩衝區大小 return bool mby...

Windows最高許可權system帳戶

內容摘要 首先,我們要盡量避免平時使用管理員賬戶登入系統 windows最高許可權system帳戶,看見有很多朋友對系統許可權感興趣,我把收藏多年的貼子在發出來給大家學習下 合併了多張關於許可權的文章,修正了部分錯誤,如果還有錯誤的地方,大家可以在回帖提出我及時修正 什麼是system許可權?為什麼...

Windows 系統System帳號及許可權

不廢話,就是windows作業系統下的最高許可權賬戶,也就是你在任務管理器裡面經常看到的很多程序或者服務所屬的賬戶,類似於linux下的root許可權。什麼?你認為administrator是最高許可權?不好意思,windows平台下面我連system是不是最高許可權我都不確定 提示沒有許可權刪除的...