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

父子进程对文件的修改,以及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

posted @ 2020-12-24 12:51  lsxkugou  阅读(277)  评论(0编辑  收藏  举报