/* ----------- count.c -------------*/ # include "count.h" int count(int pid, int delay) { int fd, n, seqno; char buffer[MAXBUF + 1]; if ( (fd = open(SEQFILE,O_RDWR) ) < 0 ) { perror("SEQFILE"); return -1; } /* rewind before read: */ lseek(fd, 0L, 0); if ( (n = read(fd, buffer, MAXBUF) ) <= 0) { perror("read"); return -1; } buffer[n] = '\0'; if ( (n = sscanf(buffer, "%d\n", &seqno)) != 1) { fprintf(stderr, "sscanf error\n"); return -1; } fprintf(stderr, "%d -- Read: %d\n", pid, seqno); seqno++; sprintf(buffer, "%03d\n", seqno); n = strlen(buffer); /* wait delay sec: */ sleep(delay); /* rewind before write: */ lseek(fd,0L,0); if (write(fd, buffer, n) != n) { perror("write"); return -1; } close(fd); return 0; }