ZT 父子进程共享文件描述符
2013-11-19 18:02
197 查看
转贴自倒霉熊的博客
【linux学习笔记-2】父子进程共享文件描述符
(2009-03-02 23:03:17)转载▼
标签:学习linux子进程文件描述符杂谈 | 分类: 学习 |
#include
<fcntl.h> //包含O_RDONLY等宏定义
int main(void){
char test;
int fd;
if((fd = open("test.dat",O_RDONLY))==
-1)
{
perror("Can't open file test.dat\n");
return 1;
}
printf("Open file succeed.\n");
if(fork()==-1)
{
perror("Can't creat child
process.\n");
return 1;
}
printf("Creat child process succeed.\n");
read(fd,&test,1);
printf("Process ID: %ld read the character:%c\n
",(long)getpid(),test);
close(fd);
return 0;
}
test.dat内容:abcdefghijklmn
open函数返回的是一个整型的文件描述符信息,该文件描述符也可以用于read,write,fcntl,lseek等系统函数中。
如果一个进程打开了一个文件以后,创建子进程,子进程会继承父进程的环境和上下文中的大部分内容,包括文件描述符。此时父子进程享有相同的文件偏移量,执行相同的程序读取文件中的字符。程序执行结果是随机的,可能是父进程先读,产生一个偏移,再由子进程读其相邻字符,也可能结果相反。
以下是该程序的一种执行结果:
root@gaolu-desktop:/home/gaolu#
root@gaolu-desktop:/home/gaolu#
gcc -o fork_file fork_file.c
root@gaolu-desktop:/home/gaolu#
root@gaolu-desktop:/home/gaolu#
root@gaolu-desktop:/home/gaolu#
root@gaolu-desktop:/home/gaolu#
root@gaolu-desktop:/home/gaolu#
./fork_file
Open file succeed.
Creat child process succeed.
Process ID: 6197 read the
character:a
//子进程先读到字符a
Creat child process succeed.
Process ID: 6196 read the character:b
相关文章推荐
- [学习笔记]父子进程共享文件描述符理解
- 关于父子进程共享文件的学习研究
- 父子进程共享文件表的
- 9.fork函数和父子进程共享文件
- 十、Linux系统编程-进程(三)父子进程共享文件、fork和vfork、exit和_exit、atexit注册退出事件
- 父子进程文件共享对socket的影响
- fork()后父子进程共享文件
- 父子进程间文件共享
- 父子进程共享文件描述符
- Python mutilprocessing Processing 父子进程共享文件对象?
- Linux进程实践(2) --僵尸进程与文件共享
- 利用内存映射文件在两个进程间共享数据 转
- 父子进程对文件的操作
- 父子进程共享内存通信的三种方法
- 使用内存映射文件在进程之间共享数据
- 同一进程中读文件无法共享
- Android中跨进程通信方式之使用文件共享
- 关于父子进程之间的数据共享
- Linux文件共享(二)——两个独立进程打开同一个文件
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转