微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux fork() fcntl() 供使用

如何解决linux fork() fcntl() 供使用

我正在研究多进程 fcntl()。 子进程共享文件描述符。 我只想让文件可以访问其中一个子进程,而其他子进程则无法访问。

首先创建三个子进程,打开文件描述符。

for(int i=0;i<3;i++)
     pid=fork()
     if(pid==0)
        fd = open("ACCOUNT_FILE",....);

文件中记录锁定 将钱存入账户。 我想让文件描述符只能访问一个进程。 请帮帮我。

reclock(fd,acccount_number,sizeof(struct record),F_WRLCK);
pos = acccount_number * sizeof(struct record);
lseek(fd,pos,SEEK_SET);
n = read(fd,&cur,sizeof(struct record));
cur.balance += amount;
lseek(fd,SEEK_SET);
write(fd,sizeof(struct record));
reclock(fd,F_UNLCK);
void reclock(int fd,int recno,int len,int type)
{   
    struct flock fl;
    switch(type){
     case F_RDLCK;
     case F_WRLCK;
     case F_UNLOCK;
         fl.l_type=type;
         fl.l_whence=SEEK_SET;
         fl.l_start=recno*len;
         fl.l_len=len;
         fcntl(fd,F_SETLKW,&fl);
         return1;
     default:  return–1;
    };
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。