签到

05月06日
尚未签到

共有回帖数 0

    奈何情殇

    等级:
    #include unistd.h
    #include fcntl.h


    #include stdio.h
    #include stdlib.h


    #include sys/types.h
    #include sys/stat.h
    #include fcntl.h


    int main(int argc, char *argv[]){
    int fd1;
    pid_t pid1;
    struct flock *flk;
    struct flock *flk1;
    flk = (struct flock *)malloc(sizeof(struct flock));
    flk1 = (struct flock *)malloc(sizeof(struct flock));
    if((flk==NULL) || (flk1==NULL)){
    printf("MALLOC FAILD");
    exit(-1);
    }

    char var1[]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    char var2[]="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc";


    fd1 = open("ted1",O_RDWR|O_CREAT|O_APPEND,00666);
    if( fd1 0){
    printf("file fd1 open | creat faile");
    exit(-1);
    }


    pid1 = fork();
    if( pid1 0){
    printf("fork pid1 faile");
    exit(-1);
    }


    if(pid1 != 0){
    fcntl(fd1,F_GETLK,flk);
    printf("parent file %hdn",flk-l_type);

    flk-l_type=F_SETLK;
    flk-l_start=0;
    flk-l_len=0;
    flk-l_whence=SEEK_SET;
    fcntl(fd1,F_SETLK,flk);
    write(fd1,var1,sizeof(var1));
    printf("parent file %hdn",flk-l_type);


    wait();
    }


    if( pid1 == 0){
    fcntl(fd1,F_GETLK,flk1);
    printf("cld file %hdn",flk1-l_type);
    }

    close(fd1);
    return 0;
    }
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    [root@localhost ~]# ./a.out
    parent file 2
    parent file 6
    cld file 2
    结果中,子进程读取文件锁状态为什么是2

    楼主 2015-10-07 22:12 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知