Messages in this thread | | | Date | Mon, 22 Feb 1999 13:30:01 -0500 (EST) | From | "Richard B. Johnson" <> | Subject | no signals from a named pipe |
| |
Hello! Is my observed behavior correct? I find that R/W access to a named-pipe can be detected with select() and poll(), but does not seem to use a signal (not even SIGPIPE, SIGPOLL, or SIGIO)?
#include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <signal.h> #include <poll.h>
#define FIFO "/tmp/foo" void nothing(int sig) { fprintf(stdout, "Got signal %d\n", sig); fflush(stdout); (void)signal(sig, nothing); } int main() { char buf[0x100];
int fd; int flags; int len; int i; struct pollfd po;
for(i=1 ;i < 32 ; i++) (void)signal(i, nothing); (void)unlink(FIFO); (void)mkfifo (FIFO, 0777); fd = open(FIFO, O_RDWR); flags = fcntl(fd, F_GETFL); flags |= FASYNC; if(fcntl(fd, F_SETFL, flags) < 0) fprintf(stderr, "You can't do that (F_SETFL)!\n"); if(fcntl(fd, F_SETOWN, getpid()) < 0) fprintf(stderr, "You can't do that (F_SETOWN)!\n"); for(;;) { po.fd = fd; po.events = POLLIN; poll(&po, 1, 0x00080000); { len = read(fd, buf, 0x100); if(len > 0) write(1, buf, len); } } return 0; }
Writes from another process are detected and displayed, i.e., `ls >/tmp/foo` works. However, no signal is generated.
Cheers, Dick Johnson ***** FILE SYSTEM WAS MODIFIED ***** Penguin : Linux version 2.2.1 on an i686 machine (400.59 BogoMips). Warning : It's hard to remain at the trailing edge of technology. Wisdom : It's not a Y2K problem. It's a Y2Day problem.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |