В общем есть прога, которая форкает -е число процессов, которые после выполнения своего пишут в лог. Как правильно это сделать ? пока делаю так: 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 Хотя в лог все равно записывается.