Adott a mellekelt kis tesztprogram. Irasra kellene lockolnia a megadott file-t. Ha ket peldanyban futtatom, a masodiknak meg kellene varnia, amig az elso elengedi a file-t. De nem var. Kifolyik a szemem, de nem latom mit toltam el.
Igerem, haromszor is megnyomom a lamerszamlalot, ha en vagyok a hunyo, de kerek egy kis segitseget! :-) kissg --------------8<------- plocktest.c ---------8<-------------- #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <string.h> int main(int argc, char **argv) { char *filename; int delay = 10; struct flock lock; int fd; if (argc < 2) { fprintf(stderr, "Usage: plocktest filename [time]\n"); exit(3); } filename = argv[1]; if (argc >= 3) { delay = atoi(argv[2]); } fprintf(stderr,"Opening file %s\n", filename); if ((fd=open(filename,O_WRONLY|O_APPEND) == -1)) { fprintf(stderr, "Cannot open file %s: %s\n", filename, strerror(errno)); exit(1); } fprintf(stderr,"Locking file...\n"); lock.l_type = F_WRLCK; lock.l_whence = SEEK_SET; lock.l_start = 0; lock.l_len = 0; if (fcntl(fd,F_SETLKW,&lock) == -1) { fprintf(stderr, "Cannot lock file %s: %s\n", filename, strerror(errno)); exit(1); } fprintf(stderr,"Waiting for %d seconds...\n", delay); sleep(delay); fprintf(stderr,"Closing file %s\n", filename); close(fd); exit(0); } -----------------8<------------------8<------------------------ $ make plocktest $ date > /tmp/lo $ ./plocktest /tmp/lo es egy masik ablakban szinten kiadando az utolso parancs. _________________________________________________ linux lista - linux@mlf.linux.rulez.org http://mlf2.linux.rulez.org/mailman/listinfo/linux