比system在应用中的好处是;可以获取运行的输出结果
从之前exec族函数所知,exec函数族的函数执行成功后不会返回
#include <stdio.h>
FILE *popen(const char *command, const char *type);
int pclose(FILE *stream);
command:是一个指向以NULL结束的shell命令字符串的指针。这行命令将被传到bin/sh并使用-c标志,shell将执行这个命令
mode:只能是读或者写中的一种,如果type是“r”则文件指针连接到commend的标准输出;如果type是“w”则文件指针连接到command的标准输入
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
//size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
int main(void)
{
char ret[1024] = {0};
system("ps");
printf("ret=%s\n",ret);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
//size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
int main(void)
{
char ret[1024] = {0};
FILE *fp;
fp = popen("ps","r");
int n_read = fread(ret,1,1024,fp);
printf("read ret %d byte,ret=%s\n",n_read,ret);
return 0;
}
打印出来的结果
read ret 146 byte,ret= PID TTY TIME CMD
26549 pts/2 00:00:00 bash
27188 pts/2 00:00:00 a.out
27189 pts/2 00:00:00 sh
27190 pts/2 00:00:00 ps