gpt4 book ai didi

c - 以只读模式打开文件时,fork后parent和child是否共享相同的文件偏移量?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:18 24 4
gpt4 key购买 nike

我无法理解为什么以只读模式打开的文件会在父子文件之间共享文件偏移量。下面的程序打开一个文件(其中包含 abcd 之类的数据)并调用下一个 fork。现在我正在尝试从子进程和父进程中读取文件。看起来文件偏移量未从输出中共享?。

# include <unistd.h>
# include <sys/types.h>
# include <stdio.h>
# include <sys/wait.h>
# include <fcntl.h>

# define CHILD 0

main(){
int fd;
char buf[4];
pid_t pid;
int childstatus;
pid = fork();
fd = open("./test",O_RDONLY);
if( pid == CHILD){
printf("Child process start ...\n");
read(fd,buf,2);
printf(" in child %c\n",buf[0]);
read(fd,buf,2);
printf(" in child %c\n",buf[0]);
sleep(5);
printf("Child terminating ...\n");
}
// parent
else{
printf("In parent ...\n");
sleep(3);
read(fd,buf,2);
printf(" in parent %c\n",buf[0]);
close(fd);
sleep(5);
printf("parent terminating ...\n");
}

Output :

In parent ...
Child process start ...
in child a
in child c
in parent a
Child terminating ...
parent terminating ...

最佳答案

Below program openes a file ( which contains data like abcd ) and next fork is called.

不,它没有。您fork 然后然后 打开文件。所以 parent 和 child 分别打开文件并获得单独的打开文件描述。如果您希望他们共享一个打开的文件描述(保存文件指针),您只需打开文件一次——在调用 fork 之前。

关于c - 以只读模式打开文件时,fork后parent和child是否共享相同的文件偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com