A SYSV MSG question

Barry Shein bzs%bostonu.csnet at CSNET-RELAY.ARPA
Thu Oct 31 00:01:38 AEST 1985


Ok, this one has me beat, before I read the sources...

I create 3 msgid's with msgget() for three different
processes, all seems fine ('ipcs -qo' reveals the
three as I would expect them.) Two of these queues
are written to (read later, but not yet, by other
processes.)

One of them has been IPC_SET to be small, but it
works fine so I doubt that is the problem (alone.)

Now the problem: if the small one blocks on q-full
(which I want it to) the other writing process blocks,
even if its queue is empty. If I kill the blocked process
and ipcrm its queue, the strangely blocked process
proceeds as normal (completes its msgsnd() and continues
happily, they are all mumbling at my terminal what they
are doing.)

Note: these three processes do not share these queues, in
my mind there should be no interaction.

Any ideas? Thanks in advance. (Oh yeah, if I add an IPC_NOWAIT
to the strangely blocked process it comes back with <0 and
EAGAIN...swell, thanks guys, note that no matter why you
returned with the IPC_NOWAIT flag it appears you will get
errno == EAGAIN, I think I would have preferred the original
errno, or something to distinguish why, sigh.)

	-Barry Shein, Boston University



More information about the Comp.unix.wizards mailing list