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

Ответ на:
комментарий
от cvv

Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от kosmonavt

Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от cvv

Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Как сделать, чтоб попытка exclusive flock не давала делать shared flock (2014)
- Форум настройка mgetty (2006)
- Форум Не получается написать прогу (2010)
- Форум Зависло обновление Ubuntu 7.04 на 7.10 [ЭКСТРЕННАЯ СИТУАЦИЯ =)] (2008)
- Форум Не могу разобраться с ошибкой сегментирования (2017)
- Форум ошибка сигментирования в so (2016)
- Форум Помогите с программой копирования фалов на си. (2013)
- Форум Работа с сокетами в C (2010)
- Форум Не блокируется pid-файл (2014)
- Форум сваливается send (сокет) (2008)