Mail Archives: cygwin/2008/08/24/07:50:54
Hi,
I don't get SIGPOLL on Cygwin in a software that runs fine on Linux and
Solaris. Is there a known issue concerning SIGPOLL and named pipes.
The setup code looks like this:
Input = open(optarg,O_RDONLY);
if (Input == -1)
error("could not open input file %s: %s\n",optarg,strerror(errno));
dbug("opening input script %s\n",optarg);
ret = fstat(Input, &st);
assert(ret != -1);
if (S_ISFIFO(st.st_mode)) {
dbug("input script is a named pipe\n");
sig.sa_handler = processSignal;
sigemptyset(&sig.sa_mask);
sigaddset(&sig.sa_mask,SIGPOLL);
sig.sa_flags = SA_RESTART;
ret = sigaction(SIGPOLL,&sig,0);
assert(ret == 0);
ret = fcntl(Input,F_SETFL,O_RDONLY|O_NONBLOCK
| FASYNC
);
assert(ret == 0);
InFlags = fcntl(Input,F_GETFL);
Script = optarg;
}
Additionally, there seem to be a bug in Cygwin concerning the
concatenation of data written to a named pipe. If I open the named pipe
a second time with O_WRONLY, to make sure that there is always one valid
open input to the named pipe, the data written to the pipe from
different processes doesn't get concatenated and I have to close and
reopen the named pipe. This is in contrast to the behavior in Linux and
Solaris, and POSIX semantics.
Any ideas or pointers?
TIA,
Thomas
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -