首页 > 系统服务 > 详细

linux-进程-子进程对文件表的继承,以及父子进程对文件修改的协作

时间:2020-12-24 17:01:52      阅读:33      评论:0      收藏:0      [点我收藏+]

父子进程对文件的修改,以及linux文件管理相关

该篇博客写的非常清楚https://blog.csdn.net/Johnsonjjj/article/details/107721363

linux时如何控制文件的?

注意:每个进程打开一个文件都有一个文件表,也就是说,不同的进程的文件指针是不一样的。但是子进程会对父进程的文件表进行复制。

技术分享图片

子进程会复制父进程的文件表,也就是说会继承当前文件的偏移量。

技术分享图片

下面的代码可以说明问题:

#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
int main(){
	pid_t pid=-1;
	int a = 0;
	int fd = open("./test.txt",O_RDONLY);
	if(fd<0){
		printf("open file failed\n");
		return -1;
	}
	pid = fork();
	if(pid>0){
		lseek(fd,0,SEEK_END);
		printf("parent have already move the pointer to the end\n");
		

	}else{
		sleep(1);
		printf("pointer at child process is:%d\n",lseek(fd,0,SEEK_CUR));
	}
	return 0;

}

结论是:

parent have already move the pointer to the end
pointer at child process is:10

linux-进程-子进程对文件表的继承,以及父子进程对文件修改的协作

原文:https://www.cnblogs.com/lsxkugou/p/14183419.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!