select bug?
Mikulas Patocka
mikulas na artax.karlin.mff.cuni.cz
Sobota Září 25 18:06:19 CEST 1999
Zdravim.
Chovani funkce select na pipy v linuxu mi prijde podivne.
Kdyz do pipy neco zapisu a pak ji otestuju selectem pro
zapis, tak nebude vybrana (ackoli by mela byt vybrana,
pokud neni zcela zaplnena). Prikladam programek, ktery to
demonstruje - na Linuxu vrati nulu a na ostatnich systemech
(zkousel jsem BSD, OS/2, Solaris) vrati 1 - pipa je radne
vybrana.
Neni to bug? (na druhou stranu mi pripada divne, ze si
toho nikdo nevsiml - je to tak i ve verzi 2.0)
Mikulas Patocka
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/time.h>
int can_write(int fd)
{
fd_set fds;
struct timeval tv = {0, 0};
FD_ZERO(&fds);
FD_SET(fd, &fds);
return select(fd + 1, NULL, &fds, NULL, &tv);
}
int main()
{
int p[2];
pipe(p);
write(p[1], "x", 1);
printf("%d\n", can_write(p[1]));
return 0;
}
Další informace o konferenci Linux