#include #include #include #include #include main(int argc, char *argv[]) { int i, j; struct flock fl; i = open(argv[1], O_RDWR, 0); if (i < 0) { fprintf(stderr, "Can't open %s\n", argv[1]); exit(1); } for (j = 0; j < 5; j++) { if (fork() != 0) sleep(10); else { fl.l_type = F_WRLCK; fl.l_whence = SEEK_SET; fl.l_start = 0; fl.l_len = 1; if (fcntl(i, F_SETLK, &fl) < 0) fprintf(stderr, "Failed err=%d\n", errno); fl.l_type = F_UNLCK; if (fcntl(i, F_SETLK, &fl) < 0) fprintf(stderr, "Failed err=%d\n", errno); exit(0); } } }