Программирование в стандарте POSIX


         

с попытки установить блокировку на


#include
#include
#include
#include
#define LOCKFILE "my_lockfile"
/* Программа выявляет блокировки, установленные */
/* на файл LOCKFILE */
int main (void) {
int fd;
struct flock lck;
assert ((fd = open (LOCKFILE, O_WRONLY)) != -1);
(void) printf ("ид-р проц. тип начало длина\n");
/* Начнем с попытки установить блокировку на */
/* весь файл */
lck.l_whence = SEEK_SET;
lck.l_start = 0;
lck.l_len = 0;
do {
lck.l_type = F_WRLCK;
(void) fcntl (fd, F_GETLK, &lck);
if (lck.l_type != F_UNLCK) {
(void) printf ("%9d %3c %7ld %5ld\n",
lck.l_pid,
(lck.l_type == F_WRLCK) ? 'W' : 'R',
lck.l_start, lck.l_len);
/* Если эта блокировка покрывает остаток файла, */
/* нет нужды выявлять другие блокировки */
if (lck.l_len == 0) break;
/* Иначе поищем новую блокировку после найденной */
lck.l_start += lck.l_len;
}
while (lck.l_type != F_UNLCK);
return (close (fd));
}

Содержание  Назад  Вперед