标准库中的管道
程序员文章站
2022-05-08 17:06:05
...
FILE* popen(const char *cmdstring,const char * type);
cmdstring:传入的命令字符串。
type:传入的读写方式,“r”,"w"。
返回值:成功返回文件指针,出错返回NULL。
int pclose(FILE *fp)
返回值:cmdstring的终止状态,出错返回-1。
pclose必须与popen配合使用,类似fopen和fclose。
popen与系统调用system()非常相似,同样创建父子进程执行,同样使用标准输入和输出,但是方式不同。
/*************************************************************************
> File Name: popen.c
> Author: CC
> Mail: [email protected]
> Created Time: 2018年09月08日 星期六 22时04分09秒
************************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//命令执行的结果放置在fp指向的结构体缓存当中
int main(void)
{
FILE* fp;
fp = popen("cat /etc/passwd","r");
if(fp == NULL){
perror("popen error!\n");
exit(1);
}
//申请一个空间并初始化
char buf[512];
memset(buf,0,sizeof(buf));
while(fgets(buf,sizeof(buf),fp) != NULL){
printf("%s",buf);
}
pclose(fp);
printf("***************************************\n");
fp = popen("wc -l","w");
fprintf(fp,"1\n2\n3\n");
pclose(fp);
return 0;
}