popen() 函数
#include <stdio.h>
FILE * popen(const char *command , const char *type );
int pclose(FILE *stream);
用创建管道的方式启动一个进程,并调用shell.
因为管道是被定义成单向的,所以type参数只能定义成只读或者只写,不能是两者同时,结果流也相应的是只读或者只写.
command 参数是一个字符串指针, 指向的是一个以null结束符结尾的字符串, 这个字符串包含一个shell命令. 这个命令被送到/bin/sh以-c参数执行, 即由shell来执行. type参数也是一个指向以null结束符结尾的字符串的指针, 这个字符串必须是 "r" 或者 "w" 来指明是读还是写.
popen()函数的返回值是一个普通的标准I/O流, 它只能用pclose()函数来关闭, 而不是fclose()函数,向这个流的写入被转化为对command 命令的标准输入; 而command命令的标准输出则是和调用popen()函数的进程相同,除非这个被command命令自己改变.
相反的,读取一个"被popen了的"流,就相当于读取command命令的标准输出,而command的标准输入则是和调用popen,函数的进程相同.
注意,popen 函数的输出流默认是被全缓冲的.
pclose 函数
等待相关的进程结束并返回一个 command命令的退出状态
PS:
FILE* stream;
char Buffer[1024];
//将"ls-l"的输出存放到Buffer.
popen("ls-l","r");
fread(Buffer,sizeof(char),sizeof(Buffer));
//将内核log存放到Buffer.
//popen("cat /proc/kmsg","r");
fread(Buffer,sizeof(char),sizeof(Buffer));
//For example: