48-利用读和写对文件进程复制
创始人
2025-05-29 06:14:11
0

1.利用读和写对文件进程复制

#include
#include
#include
#includeint main()
{int fdr=open("file.txt",O_RDONLY);int fdw=open("newfile.txt",O_WRONLY|O_CREAT,0600);if(fdr==-1||fdw==-1){exit(0);}char buff[256]={0};int num=0;while((num=read(fdr,buff,255))>0){write(fdw,buff,num);}close(fdr);close(fdw);exit(0);
}

2.实现类似cp命令(cp 源文件名 新文件名)

#include
#include
#include
#includeint main(int argc,char *argv[])
{if(argc!=3){printf("argc error\n");}char *file_name=argv[0];char *newfile_name=argv[1];int fdr=open(file_name,O_RDONLY);int fdw=open(newfile_name,O_WRONLY|O_CREAT,0600);if(fdr==-1||fdw==-1){exit(0);}char buff[256]={0};int num=0;while((num=read(fdr,buff,255))>0){write(fdw,buff,num);}close(fdr);close(fdw);exit(0);
}

运行程序

./test03 file.txt newfile.txt

3.进程打开文件的流程

inode节点:存放有关文件的属性信息;(唯一性)
在这里插入图片描述

4.先打开再fork的流程(重点)

在这里插入图片描述

#include
#include
#include
#include
#includeint main()
{int fd=open("file.txt",O_RDONLY);assert(fd!=-1);if(fd==-1){exit(0);}pid_t pid=fork();assert(pid!=-1);if(pid==0){char buff[128]={0};int n=read(fd,buff,1);printf("child %s\n",buff);sleep(1);n=read(fd,buff,1);printf("child %s\n",buff);}else{char buff[128]={0};int n=read(fd,buff,1);printf("parent %s\n",buff);sleep(1);n=read(fd,buff,1);printf("parent %s\n",buff);}close(fd);exit(0);
}

先创建一个文件file.txt,内容为abcdefg;
父进程打开文件以后,fork产生子进程,父子进程共享打开的文件,同时共享文件偏移
量;

5.先fork再open

(了解文件偏移量不共享)
在这里插入图片描述
在这里插入图片描述

6.fork补充1:

在这里插入图片描述
打印结果是BAA;

7.fork补充2:

操作系统精髓与设计原理第101页;
在这里插入图片描述

8.系统调用与库函数的区别

系统调用的执行过程:
在这里插入图片描述

系统调用是为了方便使用操作系统的接口,而库函数则是为了人们编程的方便;
库函数调用与系统无关,不同的系统,调用库函数,库函数会调用不同的底层函数实现,因
此可移植性好;

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...