優點:跨平台
缺點:windows下呼叫時會閃出控制台視窗
#
include
#include
/*** @brief 使用popen呼叫終端並獲取執行結果
* * @param[in] cmd 命令內容
* @param[out] result 儲存結果的位址
* @return 0或1 執行狀態,失敗或成功
*/int
exec_cmd
(const
char
*cmd,
char
*result)
;while(!
feof
(pipe)
)pclose
(pipe)
;return1;
}
優點:後台程序執行,無控制台視窗
缺點:僅適用windows
#
include
#include
/*** @brief 通過建立程序的方式無控制台視窗執行cmd
** @param[in] cmd 命令
* @param[out] result 執行結果
* @return 1|0|-1 成功|管道建立失敗|程序建立失敗
*/int
exec_cmd_1
(char
* cmd,
char
* result)
;// 此結構體用於指定新程序的主視窗特性 = sizeof(startupinfo);
getstartupinfo
(&si)
; si.wshowwindow = sw_hide;
// 視窗設為隱藏
si.hstderror =
null
;//h_write; // 標識控制台視窗的快取,可指定管道
si.hstdoutput = h_write;
// 同上
si.dwflags = startf_useshowwindow | startf_usestdhandles;
// 使用wshowwindow成員,使用hstdinput、hstdoutput、hstderror成員
process_information pi;
// 此結構返回有關新程序及其主線程的資訊if(
!createprocess
(null
, cmd,
null
,null
, true,
null
,null
,null
,&si,
&pi)
)// 建立程序
return-1
;closehandle
(h_write)
;closehandle
(pi.hthread)
;closehandle
(pi.hprocess)
;char buffer[
1024]=
; dword i =
0, bytes_read;
while
(i <
2048
)closehandle
(h_read)
;return1;
}/**
* @brief 通過建立程序的方式無控制台視窗執行cmd
** @param[in] cmd 命令
* @return 1|0|-1 成功|管道建立失敗|程序建立失敗
*/int
exec_cmd_2
(char
* cmd)
;// 此結構體用於指定新程序的主視窗特性 = sizeof(startupinfo);
getstartupinfo
(&si)
; si.wshowwindow = sw_hide;
si.dwflags = startf_useshowwindow;
process_information pi;
// 此結構包含有關新程序及其主線程的資訊if(
!createprocess
(null
, cmd,
null
,null
, true,
null
,null
,null
,&si,
&pi)
)return-1
;closehandle
(pi.hthread)
;closehandle
(pi.hprocess)
;return1;
}
#
include
void
main()
c 執行cmd命令
using system using system.collections.generic using system.linq using system.text using system.threading using system.diagnostics catch exception e re...
C語言執行命令並獲取返回值
工作原理 popen先執行fork,然後呼叫exec執行cmdstring,並返回乙個標準的i o檔案指標。標頭檔案 include 原型 file popen const char cmdstring,const char type cmdstring 包含shell命令字串 為 w 時,則檔案指...
cmd 執行命令
一 一鍵開啟執行 開啟 執行 視窗,都是通過 開始 選單中的命令來完成的。其實我們可以為執行建立乙個快捷方式,一鍵開啟執行視窗。右擊桌面上的快捷方式,開啟屬性視窗。切換到 快捷鍵 方式選項卡,在 快捷鍵 裡面輸入乙個按鍵,然後單擊 確定 按鈕,這樣我們要開啟執行視窗時只需要按下該快捷鍵即可。二 快速...