В общем есть прога, которая форкает -е число процессов, которые после
выполнения своего пишут в лог. Как правильно это сделать ? пока делаю
так:
snprintf(buf_r, STR_BUF-1, "%s %d\n", buf, result);
if ((fd = open(cur_log,O_WRONLY|O_CREAT|O_APPEND),S_IRUSR) == -1) {
perror("Unable to open log file");
exit(-1);
}
if (flock(fd,LOCK_EX)) {
perror("Unable to get exclusive lock for log file");
close(fd);
exit(-2);
}
write(fd,buf_r,sizeof(char)*strlen(buf_r));
if (flock(fd,LOCK_UN)) {
perror("Unable to remove exclusive lock for log file");
close(fd);
exit(-3);
}
close(fd);
Насколько это корректно? Просто время от времени прога выдает:
Unable to get exclusive lock for log file: Bad file descriptor
Unable to get exclusive lock for log file: Bad file descriptor
Unable to get exclusive lock for log file: Bad file descriptor
Хотя в лог все равно записывается.
Форум —
Development

