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 (将#修改为@)