有名管道的简单小结

有名管道的简单小结

ID:35305496

大小:47.50 KB

页数:3页

时间:2019-03-23

有名管道的简单小结_第1页
有名管道的简单小结_第2页
有名管道的简单小结_第3页
资源描述:

《有名管道的简单小结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Linux下无名管道操作:以下是一些在管道的使用中需要注意的问题:1.pipe()的调用必须在fork()之前;2.及时关闭不需要的管道句柄;3.使用dup()之前确定定向的目标是最小的文件句柄;4.管道只能实现父子进程间的通信,如果两个进程之间没有fork()关系,就必须考虑其他的进程通信方法。#include#include#include#include#includeintmain(void){pid_tpid;intfp[2]={0};c

2、harstring[30]="HelloWorld,I'mfine.";charreadbuf[1024]={0};if(pipe(fp)<0){perror("pipeerror.");exit(1);}pid=fork();if(pid<0){perror("forkerror.");exit(1);}if(pid==0){close(fp[1]);memset(readbuf,0,sizeof(readbuf));read(fp[0],readbuf,sizeof(readbuf));printf("%s",readbuf);clo

3、se(fp[0]);_exit(0);}if(pid>0){close(fp[0]);write(fp[1],string,strlen(string));close(fp[1]);_exit(0);}return0;}使用dup2()函数复制文件句柄用法:intdup2(intoldhandle,intnewhandle);#include#include#include#include#include#include#i

4、nclude#include/*ls-la

5、wc-l*/intmain(intarg,char*argv[]){intfds[2]={0};pipe(fds);pid_tpid=fork();if(pid<0){perror("fork");exit(-1);}elseif(pid==0){close(fds[0]);dup2(fds[1],STDOUT_FILENO);//system("ls-la");execlp("ls","ls","-la",NULL);exit(-1);}else{close(fds[

6、1]);dup2(fds[0],STDIN_FILENO);system("wc-l");}wait(NULL);return0;}popen()函数通过创建一个管道,调用fork产生一个子进程,执行一个shell以运行命令来开启一个进程。这个进程必须由pclose()函数关闭,而不是fclose()函数。pclose()函数关闭标准I/O流,等待命令执行结束,然后返回shell的终止状态。如果shell不能被执行,则pclose()返回的终止状态与shell已执行exit一样。//popen();FILE*popen(constchar*comma

7、nd,constchar*type);#include#include#include#include#includeintmain(void){FILE*pipein_fp,*pipeout_fp;charreadbuf[80];if((pipein_fp=popen("ls","r"))==NULL){perror("popen");exit(1);}/*用popen建立一个通向"sort"的写管道*/if((pipeout_fp=popen(

8、"sort","w"))==NULL){perror("popen");exit(1);}/*进程循环*/while(fgets(readbuf,80,pipein_fp))fputs(readbuf,pipeout_fp);/*关闭打开的管道*/pclose(pipein_fp);pclose(pipeout_fp);return0;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。