gpt4 book ai didi

c - windows下C程序有多少种执行系统命令的方法

转载 作者:行者123 更新时间:2023-11-30 14:55:55 25 4
gpt4 key购买 nike

我正在使用 MS Visual Studio 2008 进行 C 编码。

我知道我们可以使用“int system(const char *command)”来执行命令。

有没有其他方法可以在C程序中执行系统命令。我还需要将执行命令的输出存储在变量中。

system() 函数执行命令并将输出发送到 stdout ,有没有办法从 stdout 读取并存储在变量中。

所以我的最终目标是在 Windows 的 C 程序中执行系统命令(使用 Visual Studio)并将该命令的输出存储在变量中。有什么建议吗?

最佳答案

标准 C 库仅提供一种在操作系统中执行外部命令的方法,因此请使用 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++ 中使用管道,例如问题 How to execute a command and get output of command within C++ using POSIX? 的答案中所示

关于c - windows下C程序有多少种执行系统命令的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45159339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com