当我们了解了fork函数之后,知道子进程会拷贝父进程的信息,那如果打开文件进行文件处理和fork在同一函数中会发生什么呢?
我们先创建一个在程序中打开的文件:string
文件内容:![]()
(1)先open后fork

其运行结果如下图:

可以看到父子进程共打印了string文件中的6个字符,这是因为父进程所有打开的文件描述符(可以查看文件描述符博客)都被复制到子进程中。先打开文件,后fork这使父子进程共享一个文件表项。情况如下:

(2)先fork后open

其运行结果如下图:

可以看到父子进程分别打印了string文件中的3个字符,并且都是前3个字符。说明,父子进程都是各自打开文件并且互不干扰。情况如下:

本文探讨了在程序中fork函数与文件处理的交互作用。当先open后fork时,父子进程共享文件描述符,导致对同一文件的不同部分进行操作;而先fork后open,则每个进程独立打开文件,互不影响。
2769

被折叠的 条评论
为什么被折叠?



