博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用FIFO进行文件拷贝一例
阅读量:6195 次
发布时间:2019-06-21

本文共 1674 字,大约阅读时间需要 5 分钟。

下面的程序实现的功能是:

writefifo.c完成从打开输入的文件名,然后将内容读取到管道

readfifo.c完成将管道中读到的内容写到输入的文件名中。

 

writefifo.c :

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define N 64int main(int argc, char *argv[]){ int fd, pfd; char buf[N] = {0}; ssize_t n; if (argc < 2) { printf("usage:%s srcfile\n", argv[0]); return 0; } if (-1 == mkfifo("fifo", 0666)) //创建管道 { if (errno != EEXIST) { perror("mkfifo"); exit(-1); } } if ((fd = open(argv[1], O_RDONLY)) == -1) //打开要读的文件 { perror("open srcfile"); exit(-1); } if ((pfd = open("fifo", O_WRONLY)) == -1) //打开管道 { perror("open fifo"); exit(-1); } while ((n = read(fd, buf, N)) > 0) //读文件,当读到末尾时,n为0 write(pfd, buf, n); //将读到的内容写入管道 close(fd); close(pfd); return 0;}

 

 

readfifo.c

 

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#define N 64int main(int argc, char *argv[]){ int fd, pfd; char buf[N] = {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;}

 

 

 

你可能感兴趣的文章
Online, Cheap -- and Elite
查看>>
exceptions.IOError: decoder jpeg not available
查看>>
正则指引
查看>>
一些专业术语的总结
查看>>
条件变脸pthread_cond_signal丢失问题
查看>>
必须掌握的8个dos命令
查看>>
WinINet function(1)
查看>>
【转】Deep Learning(深度学习)学习笔记整理系列之(二)
查看>>
代码质量与上线压力
查看>>
系统时间不对 导至不能正常上网
查看>>
php 使用 ffmpeg 转换视频,截图,并生成缩略图
查看>>
jQuery EasyUI API 中文文档 - 加载器
查看>>
addedbytes.com 制作的速查表欣赏
查看>>
程序员好难...
查看>>
WPF下载远程文件,并显示进度条和百分比
查看>>
实现app上对csdn的文章查看,以及文章中图片的保存 (制作csdn app 完结篇)
查看>>
excel使用技巧
查看>>
Flymeos插桩适配教程
查看>>
Ubuntu 14.04下单节点Ceph安装(by quqi99)
查看>>
[Python] Handle Exceptions to prevent crashes in Python
查看>>