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;
};
}