popen()函数
FILE *popen(const char * command,const char *type);
在linux环境下,可以通过popen()函数将系统命令输出结果输出到字符数组中
实现原理:
popen()函数调用fork()产生子进程,在子进程中调用/bin/sh -c,执行参数command的命令。
参数type取“r”表示读取,对应shell命令的标准输出设备
“w”表示写入,对应shell命令的标准输入设备
依据type值的不同,popen()会建立管道连接子进程的标准输入或标准输出设备,返回文件指针。
随后,进程可以从文件指针中读取标准输出或是写入到标准输入中
注意:
在关闭文件指针时,只能用pclose()函数
不能用fclose()函数
例子:
#include <stdio.h>
int main()
{
FILE *fp;
char buffer[100];
fp = popen("cat /etc/passwd","r");
fgets(buffer,sizeof(buffer),fp);
printf("%s\n",buffer);
pclose(fp);
return 0;
}