#define SEQFILE "secv" #define MAXBUF 100 #include "err_sys.c" main() { int fd, i, n, pid, nrsecv; char buf[MAXBUF + 1]; pid = getpid(); if ((fd = open(SEQFILE, 2)) < 0) err_sys("Nu poate deschide"); for (i = 0; i < 20; i++) { /* my_lock(fd); Blocheaza fisierul */ lseek(fd, 0L, 0); /* Pozitionare la inceput */ if ((n = read(fd, buf, MAXBUF)) <= 0) err_sys("Eroare la citire"); buf[n] = '\0'; /* Zeroul terminal */ if ((n = sscanf(buf, "%d\n", &nrsecv)) != 1) err_sys("Eroare la sscanf"); printf("pid = %d, secventa = %d\n", pid, nrsecv); nrsecv++; /* Incrementeaza secventa */ sprintf(buf, "%03d\n", nrsecv); n = strlen(buf); lseek(fd, 0L, 0); /* Revenire inainte de scriere * cu ceva foartew lung ccare va * trebui sa fie rupt de indent */ if (write(fd, buf, n) != n) err_sys("Eroare la scriere"); /* my_unlock(fd); Deblocheaza fisierul */ } }