标签:程序 targe man pip str 标准输出 命令 管道 标准
FILE *popen(const char *cmd,const char *type);
创建一个管道,fork一个子进程,接着关闭管道的不使用端,子进程执行cmd指向的应用程序或者命令。
执行完该函数后父进程和子进程之间生成一条管道,函数返回值为FILE结构指针,该指针作为管道的一端,为父进程所拥有。子进程则拥有管道的另一端,该端口为子进程的stdin或者stdout
如果type=r,那么该管道的方向为:子进程的stdout到父进程的FILE指针(文件指针连接到command的标准输出);
如果type=w,那么管道的方向为:父进程的FILE指针到子进程的stdin(type是"w"则文件指针连接到command的标准输入)。
//#include "unpipc.h" #include <stdio.h> #include <stdlib.h> #include <string.h> const int MAXLINE=4096; int main() { char buffer[MAXLINE],command[MAXLINE]; fgets(buffer,MAXLINE,stdin);//输入文件路径 size_t len=strlen(buffer); if(buffer[len-1]==‘\n‘)//去除fgets尾的换行 --len; //把cat与路径名相连 shell命令 snprintf(command,sizeof(command),"ls %s",buffer); //创建一个子进程,子进程执行command命令,子进程的输出输入到父进程的输入 FILE *fp=popen(command,"r"); //printf("pid is %d\n",getpid()); //fgets每次读取一行,不能用if while(fgets(buffer,MAXLINE,fp)!=NULL)//读取成功 fputs(buffer,stdout);//输出到屏幕 pclose(fp); exit(0); }
fgets用法
char *fgets(char *buf, int bufsize, FILE *stream);
标签:程序 targe man pip str 标准输出 命令 管道 标准
原文地址:https://www.cnblogs.com/tianzeng/p/9786023.html