Linux 管道编程
2015-10-06 12:17
447 查看
一,二节管道,一条管道
who sort 的形式
.
./pipe2.o
./pipe3
./test2
./pipe3.o
./demo2
./pipe2.c
./demo1
./pipe2
./pipe3.c
[war@war pipen]$
第二种形式:
.
./pipe2.o
./pipe3
./test2
./pipe3.o
./demo2
./pipe2.c
./demo1
./pipe2
./pipe3.c
[war@war pipen]$
这里加了延时,是为了让子进程先完成.
who sort 的形式
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int ac,char *av[]){ int pid; int apipe[2]; if(ac != 3){ fprintf(stderr,"need 2 parameters\n"); exit(1); } if(pipe(apipe) == -1){ perror("pipe"); exit(1); } pid = fork(); switch(pid){ case -1: perror("fork"); exit(1); case 0: // 子进程 close(apipe[0]); dup2(apipe[1],1); close(apipe[1]); execlp(av[1],av[1],NULL); exit(1); default: // 父进程 close(apipe[1]); dup2(apipe[0],0); close(apipe[0]); execlp(av[2],av[2],NULL); exit(1); } return 0; }[war@war pipen]$ ./pipe2 find head
.
./pipe2.o
./pipe3
./test2
./pipe3.o
./demo2
./pipe2.c
./demo1
./pipe2
./pipe3.c
[war@war pipen]$
第二种形式:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int ac,char *av[]){ if(ac != 3){ fprintf(stderr,"need 3 parameters.\n"); exit(1); } int pid; int pipea[2]; if(pipe(pipea) == -1){ perror("pipe"); exit(1); } pid = fork(); switch(pid){ case -1: perror("fork"); exit(1); case 0: close(pipea[1]); dup2(pipea[0],0); close(pipea[0]); execlp(av[2],av[2],NULL); exit(0); default: close(pipea[0]); dup2(pipea[1],1); close(pipea[1]); sleep(1); // 等待子进程先完成 execlp(av[1],av[1],NULL); exit(0); } return 0; }[war@war pipen]$ ./pipe3 find head
.
./pipe2.o
./pipe3
./test2
./pipe3.o
./demo2
./pipe2.c
./demo1
./pipe2
./pipe3.c
[war@war pipen]$
这里加了延时,是为了让子进程先完成.
相关文章推荐
- 关于Linux服务端被登录时,客户端登录窗口的警示信息
- 设置centos 系统时间与物理主机一致
- wkhtmltoxwkhtmltopdf linux 安装
- Linux文件管理之压缩解压缩
- ubuntu 安装 flash player 方法
- Linux文件系统应用---系统数据备份和迁移(用户角度)
- Linux内核(一)
- centos6中搭建svn服务器以及相关权限配置
- linux 学习笔记----文件系统的实现------目录实现和文件实现
- Linux 爬虫
- 超实用的8个Linux命令行性能监测工具
- Linux性能工具
- CentOS下配置Lua运行环境
- 【Linux高频命令专题(13)】cat
- 【Linux高频命令专题(12)】touch.md
- Python linux 下的python调试
- linux convmv
- Linux高性能server规划——多线程编程(在)
- Linux 内核 0.01 发布纪念日:协作的价值
- Linux常见应用--DNS服务器常见应用实现