C语言执行Linux的shell命令并获得返回值

时间:2022-09-02 23:26:36

popen函数执行命令后,返回一个指向该命令输出的文件句柄,接下来就可以用fgets等文件操作函数去读取输出结果。

#include <stdio.h>

FILE *popen(const char *command, const char *type);

int pclose(FILE *stream);
type的参数只能是“r”或"w"

例如

#include<stdio.h>
#include<string.h>
int main(int argc,char*argv[]){
FILE *fstream=NULL;
char buff[1024];
memset(buff,0,sizeof(buff));
if(NULL==(fstream=popen("ls -l","r")))
{
fprintf(stderr,"execute command failed: %s",strerror(errno));
return -1;
}
if(NULL!=fgets(buff, sizeof(buff), fstream))
{
printf("%s",buff);
}
else
{
pclose(fstream);
return -1;
}
pclose(fstream);
return 0;
}