Linux C通过管道实现文件复制

Linux C通过管道实现文件复制,第1张

#include"stdio.h"

#include"stdlib.h"

#include"unistd.h"

#include"sys/types.h"

#include"sys/stat.h"

#include"string.h"

#include"fcntl.h"

#include"errno.h"

#define FIFO1 "/tmp/fifo"

#define MAXLINE 100

void client1(int)

void client2(int)

int main(int argc,char **argv)

{

int writefd

writefd=open(FIFO1,O_WRONLY,0)

client1(writefd)

client2(writefd)

close(writefd)

unlink(FIFO1)

exit(0)

}

void client1(int writefd1)//实现从文件写到管道,自己创建一个aa.txt文件

{

char buff[MAXLINE]

int fd

memset(buff,0,sizeof(buff))

fd=open("aa.txt",O_CREAT|O_RDWR,S_IRWXU)

read(fd,buff,sizeof(buff))

write(writefd1,buff,sizeof(buff))

close(fd)

}

void client2(int writefd2)//)//实现从管道写到另一个文件

{

char buff[MAXLINE]

int fd

fd=open("bb.txt",O_CREAT|O_RDWR,S_IRWXU)

read(writefd2,buff,sizeof(buff))

write(fd,buff,sizeof(buff))

close(fd)

}

我这里省略了许多判断,自己加哈

如有问题,在线交流

使用cat命令通过管道可以把一个文件的内容复制到另一个文件的末尾,命令如下:

cat

要复制的文件

>>

复制到的文件

说明:

管理 *** 作符>为覆盖,>>为追加。

cat命令说明:

cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于windows下的type命令。

注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按ctrl+s键,停止滚屏;按ctrl+q键可以恢复滚屏。按ctrl+c(中断)键可以终止该命令的执行,并且返回shell提示符状态。

语法

cat(选项)(参数)

选项

-n或-number:有1开始对所有输出的行数编号;

-b或--number-nonblank:和-n相似,只不过对于空白行不编号;

-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;

-a:显示不可打印字符,行尾显示“$”;

-e:等价于"-ve"选项;

-t:等价于"-vt"选项;

参数

文件列表:指定要连接的文件列表。

实例

设ml和m2是当前目录下的两个文件

cat

m1

(在屏幕上显示文件ml的内容)

cat

m1

m2

(同时显示文件ml和m2的内容)

cat

m1

m2

>

file

(将文件ml和m2合并后放入文件file中)

先将内容读出,再使用截取工具,最后将内容重定向放到另一个文件中。

例:将filename1的第n行放到filename2中。

# cat filename1 | sed -n 'np' >>filename2


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7326430.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存