This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

SIGPOLL and named pipes


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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]