[英]How to execute Windows System() command from C:\Windows\System32 folder?
[英]How many ways are there to execute system command in C program for windows
我正在使用MS visual studio 2008進行C編碼。
我知道我們可以使用“ int system(const char *command)
”來執行命令。
還有其他方法可以在C程序中執行系統命令。 另外,我需要將執行命令的輸出存儲在變量中。
system()
函數執行命令並將輸出發送到stdout
,有什么方法可以從stdout
讀取並存儲在變量中。
因此,我的最終目標是在Windows的C程序中執行系統命令(使用Visual Studio)並將該命令的輸出存儲在變量中。 有什么建議么 ?
標准C庫僅提供一種在OS中執行外部命令的方法,因此請使用int system(const char *command)
。
您可以將該命令的輸出保存到文本文件,然后從程序中讀取該文件。
例如:
#include <stdio.h>
#include <stdlib.h>
#define TMP_FILE_NAME "TMP_FOLDER_CONTENT.txt"
int main(int argc, char *argv[])
{
system("dir C:\* > "TMP_FILE_NAME);
FILE * fdir = fopen(TMP_FILE_NAME, "r");
char buff[100];
if (fdir)
{
while (1) {
if (fgets(buff, 100, fdir) == NULL) break;
printf("%s", buff);
}
}
fclose(fdir);
remove(TMP_FILE_NAME);
return 0;
}
其中dir
是要執行的程序, C:\\*
-該程序的參數, >
-該命令的標准輸出重定向,之后將替換文件名TMP_FOLDER_CONTENT.txt
。
您還可以檢查返回值,例如:
int errorcode = system("dir C:\* > "TMP_FILE_NAME);
printf("Command executed and returned a value %d\n", errorcode);
或考慮到您使用的命令,請更改程序的邏輯,例如:
int errorcode = system("dir C:\* > "TMP_FILE_NAME);
if( errorcode )
{
return errorcode;
}
更新:
或者,您可以使用C ++中的管道,例如,如問題解答中所示, 如何使用POSIX在C ++中執行命令並獲取命令輸出?
您可以按照@VolAnd的說明進行操作,或者如果您不關心/不希望命令的輸出位於stdout
並且也不想將其他任何內容打印到stdout
,則可以使用freopen進行設置標准輸出到您選擇的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.