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