利用FIFO进行文件拷贝一例
2013-03-08 19:28
169 查看
下面的程序实现的功能是:
[b]writefifo.c完成从打开输入的文件名,然后将内容读取到管道[/b]
readfifo.c完成将管道中读到的内容写到输入的文件名中。
[b]writefifo.c :[/b]
[b]writefifo.c完成从打开输入的文件名,然后将内容读取到管道[/b]
readfifo.c完成将管道中读到的内容写到输入的文件名中。
[b]writefifo.c :[/b]
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <strings.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #define N 64 int main(int argc, char *argv[]) { int fd, pfd; char buf = {0}; ssize_t n; if (argc < 2) //检查输入的参数是否合法 { printf("usage:%s destfile\n", argv[0]); return 0; } if (-1 == mkfifo("fifo", 0666)) //创建一个名称为fifo的管道 { if (errno != EEXIST) //如果创建错误,看错误码是否为EEXIST,即看要创建的管道是否已经存在 { perror("mkfifo"); exit(-1); } } if ((fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0666)) == -1) //打开要写的文件 { perror("open destfile"); exit(-1); } if ((pfd = open("fifo", O_RDONLY)) == -1) //打开管道 { perror("open fifo"); exit(-1); } while ((n = read(pfd, buf, N)) > 0) //读管道,当读到n为0时,说明写端已经关闭 write(fd, buf, n); //将读到的内容写到文件中 close(fd); //关闭要写的文件 close(pfd); //关闭管道 return 0; }
相关文章推荐
- 如何在Linux环境下利用移动硬盘进行文件拷贝工作
- 利用scp自动输入密码进行文件远程拷贝或备份
- 利用scp自动输入密码进行文件远程拷贝或备份
- 一个简单的利用ini配置文件以及用户输入的交互进行文件夹内容拷贝的批处理文件脚本的实现
- [NIO]利用内存映射文件以及普通通道进行文件拷贝效率分析
- 利用scp自动输入密码进行文件远程拷贝或备份
- 利用scp自动输入密码进行文件远程拷贝或备份
- 利用系统文件表进行硬盘防拷贝(转载)
- 利用SecureCRT进行文件的传输
- Java利用文件输入输出流实现文件夹内所有文件拷贝到另一个文件夹
- opencv笔记 1.利用摄像头进行视频文件写入
- 利用signapk.jar工具对apk文件进行签名
- Linux 利用 expect 进行 scp 自动同步文件
- [Git & GitHub] 利用Git Bash进行第一次提交文件
- 利用vsftpd进行文件的传输
- mysql 通过拷贝数据文件的方式进行数据库迁移实例
- [Visual C++系列]3.5 利用序列化进行文件读写
- C++编程思想3-利用C++进行文件操作封装C函数
- 利用python进行数据分析-数据加载、存储与文件格式2
- 利用C#进行文件读写的方法选择总结