- 论坛徽章:
- 0
|
代码如下(一个父进程,fork了100个子进程,每个子进程共享父进程打开的文件描述符,每个子进程写入1000个字符,基本的逻辑过程就是这样)
为什么在程序exit后,文件中,没有存入100*1000个字符?
如果将子进程数量增多,或者字符数增加,那么,文件中的字符数就更匹配不上了
很纳闷这个问题,坛子里的朋友有兴趣可以看一看,呵呵- #include <stdio.h>
- #include <fcntl.h>
- int main()
- {
- struct flock stF;
- int i,n,fd,pid;
- fd=open("./output.txt",O_RDWR|O_CREAT);
- for(i=0;i<99;i++)
- {
- pid=fork();
- if(pid==-1)
- {
- perror("fork:");
- }
- else if( pid > 0 )
- {
- break;
- }
- }
- stF.l_type=F_WRLCK;
- stF.l_start=0;
- stF.l_whence=SEEK_SET;
- stF.l_len=0;
- for(i=0;i<999;i++)
- {
- if(fcntl(fd,F_SETLKW,&stF)==-1)
- {
- perror("lock:");
- }
- lseek(fd,0,SEEK_END);
- if(write(fd,"1",1)!=1)
- {
- perror("write:");
- }
- stF.l_type=F_UNLCK;
- if(fcntl(fd,F_SETLKW,&stF)==-1)
- {
- perror("unlock:");
- }
- }
- close(fd);
- }
复制代码 |
|