int lock(char* fname) ←ファイル名を与えると、そのファイルをロックして
{ ファイルハンドルを返す。すでに他からロックされ
int fd; ていたときはブロックする。
if ((fd = open(fname, O_WRONLY)) < 0 &&
(fd = open(fname, O_CREAT|O_WRONLY, 0664)) < 0) {
return -1;
}
flock(fd, LOCK_EX);
lseek(fd, 0, SEEK_END);
return fd;
}
int unlock(int fd) ←ロックしたときのファイルハンドルを与えると、
{ ロックが解除される。この処理を行わなくても
flock(fd, LOCK_UN); プログラム終了時に自動的に解除されます。。
return close(fd);
}
|
|