Date: Tue, 5 Sep 2000 19:50:56 +0400 From: "Andrey A. Chernov" <ache@nagual.pp.ru> To: current@freebsd.org Subject: FIFOs & select: what about our implementation? Message-ID: <20000905195056.A67326@nagual.pp.ru>
next in thread | raw e-mail | index | archive | help
Consider this comment comes from screen(1): /* * Define this if your system exits select() immediatly if a pipe is * opened read-only and no writer has opened it. */ #define BROKEN_PIPE 1 We have broken(?) pipe, according to this statement. At least, we have select return code -1 with wrong errno == 0. I attach the test for it below. The question is: what about our fifo select (actually poll) implementation? Is it really broken, or is it a feature? What standards says? If this is a feature, at least errno must be fixed. ----------------------------------------------------- #include <stdio.h> #include <sys/types.h> #include <fcntl.h> #include <sys/time.h> #include <sys/stat.h> char *fin = "/tmp/conftest$$"; main() { struct timeval tv; int r, x; unlink(fin); if (mkfifo(fin, 0600)) exit(1); close(0); if (open(fin, O_RDONLY|O_NONBLOCK)) exit(1); r = 1; tv.tv_sec = 1; tv.tv_usec = 0; if (select(1, &r, 0, 0, &tv)) { perror("select"); exit(1); } exit(0); } ----------------------------------------------------- -- Andrey A. Chernov <ache@nagual.pp.ru> http://ache.pp.ru/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000905195056.A67326>