函数原型:
FILE *popen(const char * command ,const char *mode)
int pclose(FILE * stream)注意点:
使用popen和pclose函数可以简洁的控制管道,不需要更多的代码,
但是降低了程序员对管道的控制能力参数commend是shell命令
参数mode是一个字符指针,r或W,分别表示popen函数的返回值是一个读打开文件指针,还是写打开文件指针,失败时返回值为NULL,
并设置出错变量errno
代码实例:
popen函数(1)创建管道
(2)调用fork函数创建子进程
(3)执行exec函数调用,调用/bin/sh -c 执行commend中的命令字符串,返回标准I/O 文件指针
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
int main( void )
{
FILE *fp;
char buffer[80];
fp = popen("cat /etc/passwd","r");
fgets(buffer,sizeof(buffer),fp);
printf("%s",buffer);
pclose(fp);
return 0;
}
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<limits.h>
int main()
{
FILE * fp;
char buf[100];
if( ( fp = popen( "cat /root/1.cpp","r") ) == NULL )
{
perror("failed to open !");
exit(1);
}
while( (fgets( buf,sizeof(buf),fp) ) != NULL )
printf("%s",buf);
return 0;