Уважаемые, обращаюсь к Вам за советом.
1) select/poll
Есть директория (к примеру dir), в которую асинхронно пользователем
сваливаются файлы, а программа должна отслеживать изменения в
структуре каталога и узнавать имена вновь прибывших файлов.
Естественно, что нам необходим или select или poll. Вопрос в том как
правильно написать этот код.
Моя попытка:
int d, fd;
struct pollfd cdp[1];
d = open(dir, O_RDONLY, S_IRUSR);
cdp[0].fd = d;
cdp[0].events = POLLRDNORM;
while(1) {
fd = poll(cdp, 1, -1);
if (fd == -1 || (cdp[0].revents & (POLLERR|POLLHUP|POLLNVAL))) {
/* ERROR */
}
else if (fd == 0) {
/* ERROR */
}
else {
if (read(d, buf, sizeof(buf)) == -1) {
/* ERROR */
}
else {
/* в buf хочу получить имя файла (ну или структурку какую) */
}
}
Дык вот этот код как умолишенный начинает работать. В buf пишется
один символ (^F). Это вероятно ошибка. Как нужно переделать?
2) fdopen и open
Вопрос второй. open умеет разделять права доступа к файлу на owner,
owner group и other. fdopen не умеет. Как с помощь fdopen получить
FILE* на открытый дескриптор:
fd = open(file, O_CREAT | O_EXCL, S_IRWXU);
?
fdopen(fd, "w") не работает (возвращает 0x0 (NULL)).
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от idle

Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [C] poll () Как замаскировать POLLHUP (2008)
- Форум Неустоичивая работа сокетов в O_NONBLOCK режиме (2004)
- Форум pty и каноничный режим (2011)
- Форум Не блокируется pid-файл (2014)
- Форум bash - poll, select (2007)
- Форум poll() или select() ? (2002)
- Форум Чудеса в ядре 2.4.18 (2005)
- Форум poll/select: приоритет write > read? (2002)
- Форум что лучше poll select kqueue (2004)
- Форум socketpair + fdopen (2008)