其实不应该把它单出来写的,可是作为上一节管道中落下的一个小知识,补充上是必要的。
popen()是一个系统函数,它完成fork()产生一个子进程,然后从子进程调用/bin/sh -c(即使用shell)来执行command的指令。父进程通过它得到子进程返回的文件描述符:
FILE * popen( const char * command,const char * type);
接下来,是<linux程序设计权威指南>里的一段实例代码,它的作用相当于ls命令的输出。
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main( int argc, char *argv[ ] )
{
FILE *fp;
char *cmd = "ls -l";
char line [ 1024 ];
fp = popen( cmd, "r" );
if( !fp ){
perror( "popen error" );
exit( 1 );
}

while( fgets( line, sizeof( line ), fp) ){
printf( "%s", line );
}
return 0;
}
popen()是一个系统函数,它完成fork()产生一个子进程,然后从子进程调用/bin/sh -c(即使用shell)来执行command的指令。父进程通过它得到子进程返回的文件描述符:
FILE * popen( const char * command,const char * type);
接下来,是<linux程序设计权威指南>里的一段实例代码,它的作用相当于ls命令的输出。






















