popen
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main( void )
{
FILE *stream;
FILE *wstream;
char buf[1024];
memset(buf,'\0',sizeof(buf));//初始化buf,以免后面写如乱码到文件中
stream = popen( "ls -al", "r" ); //将“ls -l”命令的输出 通过管道读取(“r”参数)到FILE* stream
wstream = fopen( "test_popen.txt", "w+"); //新建一个可写的文件
fread( buf, sizeof(char), sizeof(buf), stream); //将刚刚FILE* stream的数据流读取到buf中
fwrite( buf, 1, sizeof(buf), wstream );//将buf中的数据写到FILE *wstream对应的流中,也是写到文件中
pclose( stream );
fclose( wstream );
return 0;
}
popen 启动shell
/*************************************************************************
> File Name: popen5.c
> Author: zwy
> Mail: zwy_qz@163.com
> Created Time: 2012年10月24日 星期三 22时58分47秒
程序启用了sh ,cat ,wc 并去最终重定向输出到buf中
************************************************************************/
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char buf[BUFSIZ];
int nsize;
FILE *file;
file = popen("cat p*.c |wc -l","r"); //统计行数
if(file != NULL)
{
nsize=fread(buf,sizeof(char),BUFSIZ,file);
while(nsize != 0)
{
printf("Reading %s\n",buf);
nsize=fread(buf,sizeof(char),BUFSIZ,file);
}
pclose(file);
exit(EXIT_SUCCESS);
}
exit(EXIT_SUCCESS);
}