父子进程共享文件描述符问题
fork()以后,父子进程应该是指向相同的文件表,但为什么子进程关闭文件后父进程还可以读入数据?
int main()
{
pid_t pid;
int fid = open("./data.dat", O_RDWR, 0);
char buffer[] = "databuffer\0";
if ((pid = fork()) < 0)
{
cerr<<"error"<<endl;
return -1;
}
else
if (pid ==0)
{
write(fid, buffer, 10);
close(fid); //子进程关闭文件
return 0;//进程正常退出
}
sleep(5);
lseek(fid, 0, SEEK_SET);
read(fid, buffer, 10);//关闭后父进程还可以从文件中读数据?
cout<<buffer<<endl;
return 0;
}