popen的使用:
#include <stdio.h>
FILE *popen(const chat *command, const char *type);
int pclose(FILE *stream);
command:是一个指向以NULL结束的shell命令字符串的指针。
type:只能是读或写的其中一种r/w
无法获得system的值,需要使用popen
代码说明:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
//函数原型:int execl(const char *path, const char *arg, ...);
int main(void)
{
char ret[1024]={0};
system("ps");
printf("ret=%s\n",ret);
return 0;
}
编译运行结果:
PID TTY TIME CMD
22183 pts/1 00:00:01 bash
27386 pts/1 00:00:00 a.out
27387 pts/1 00:00:00 sh
27388 pts/1 00:00:00 ps
ret=
popen使用实例:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
//函数原型:int execl(const char *path, const char *arg, ...);
int main(void)
{
char ret[1024]={0};
FILE *fp;
fp=popen("ps","r");
int nread=fread(ret,1,1024,fp);
printf("nread=%d,ret=%s\n",nread,ret);
return 0;
}
可以将ps的输出结果捕获到ret空间中读出
运行结果:
nread=141,ret= PID TTY TIME CMD
22183 pts/1 00:00:02 bash
27530 pts/1 00:00:00 a.out
27531 pts/1 00:00:00 sh
27532 pts/1 00:00:00 ps