Можно ли с select() отслеживать, что в файле появились новые данные?
Всем привет,
Что-то торможу я в понедельник с простым вопросом. Проблемка примерно следующая: udev при подключении/отключении какого-либо устройства добавляет в /tmp/device файл строку, например, «+ mmc» или "- mmc". Хочу в моей программе получать инфу, в момент, когда новая запись добавляется в файл. И хотел сделать это с select(). Написал примитивную программку (см ниже). Так вот прикол в том, что select() всегда возвращается и read() читает 0 данных из файла. Что я делаю не так? Может select() не годится для слеженуя за нормальными файлами? select() мне был бы интересен, поскольку есть еще в программе netlink-соцкет, который я зацепил на select(), хотелось бы еще и эту часть связать с select()
Всем заранее спасибо
int m_fd = open( «/tmp/device», O_CREAT | O_RDONLY | O_SYNC );
while(1)
{
fd_set rfds;
char buffer[10000];
int rd;
FD_ZERO( &rfds );
FD_SET( m_fd, &rfds );
pselect( m_fd+ 1, &rfds, NULL, NULL, NULL, NULL );
if( FD_ISSET(m_fd, &rfds) )
{
rd=read( m_fd, buffer, sizeof(buffer) );
}
usleep(5000000);
}