linux fork()fcntl()供使用

linux fork()fcntl()供使用,linux,fcntl,Linux,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

我正在学习多进程
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,pos,SEEK_SET);
write(fd, &cur ,sizeof(struct record));
reclock(fd, acccount_number, sizeof(struct record), 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;
    };
}