gpt4 book ai didi

c - 直接输出系统命令

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

我正在尝试在 C 中运行 system() 命令。但我希望将输出存储在字符串变量中,但后来我发现系统命令的返回值为零或一个数值。举个例子,如果我输入 system(ls),结果将打印在 shell 中,但我想要的是将其转换为字符串。可能吗?

如果这是不可能的,有人可以告诉我如何将 system() 命令的输出定向到文件,以便我可以从文件中读取它。

while(1){
bzero(buff,MAXLINE+1);
read(ns,buff,MAXLINE);
puts(buff);
system(buff);
send(ns,buff,strlen(buff)+1,0);
}

上面的代码没有将系统命令的输出放入字符串中,因此我尝试将输出放入文本文件中,但这也不起作用:

while(1){
FILE *f=fopen("tmp.txt","w");
bzero(buff,MAXLINE+1);
read(ns,buff,MAXLINE);
system(buff>f);
puts(buff);

send(ns,buff,strlen(buff)+1,0);
}

最佳答案

您应该使用popen()而不是system()如果你想捕获进程输出(实际上你不应该使用 system() )。

简单示例:

FILE *fd = popen("ls", "r");

if(fd == NULL) {
fprintf(stderr, "Could not open pipe.\n");
return;
}

// Read process output
char buffer[BUFFER];
fgets(buffer, BUFFER, fd);

http://linux.die.net/man/3/popen

但是,我应该注意到,有比执行 ls 更合适的方法来获取目录列表。从你的程序中。这是一个涉及该主题的问题:How can I get the list of files in a directory using C or C++?

关于c - 直接输出系统命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20431840/

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