#include #include #include #include #include #include int main (int argc, char *argv[]) { FILE *f; int fd; struct flock lck; if (argc != 3) { fprintf (stderr, "Usage: tfcntl \n"); exit (1); } f = fopen (argv[1], "r+b"); if (f == NULL) { fprintf (stderr, "tfcntl: can't open file %s\n", argv[1]); perror ("tfnctl"); exit (2); } fd = fileno (f); memset (&lck, 0, sizeof (struct flock)); lck.l_type = F_WRLCK; lck.l_whence = SEEK_SET; if (fcntl (fd, F_SETLK, &lck) == -1) { fprintf (stderr, "tfcntl: lock failed (errno = %d)\n", errno); perror ("tfnctl"); exit (3); } sleep(atoi(argv[2])); memset (&lck, 0, sizeof (struct flock)); lck.l_type = F_UNLCK; lck.l_whence = SEEK_SET; fcntl (fd, F_SETLK, &lck); return 0; }