I try to implement a message queue
where the sender informs the recipient
if new data with Trigger.
But after a few successful Trigger calls, subsequent
fails when the receiver enters Receive().
sender code snippet:
static pid_t proxy = -1;
if (-1 == proxy) {
pid_t pid;
/* Attach a proxy to receiver */
if (-1 == (pid = Send_ss_getpid(RECIEVER)))
return -1;
printf("%d: pid of RECEIVER: %d\n", getpid(), pid);
if (-1 == (proxy = qnx_proxy_attach(pid, 0, 0, -1)))
return errno;
printf("%d: pid of proxy: %d\n", getpid(), proxy);
}
if (-1 == Trigger(proxy)) {
printf("%d: Trigger(%d) failed: %s\n", getpid(), proxy,
strerror(errno));
return errno;
}
else
printf("%d: Trigger(%d) succeceded\n", getpid(), proxy);
return 0;
when run, it produces the following trace:
2510: pid of RECEIVER: 2520
2510: pid of proxy: 2536
2510: Trigger(2536) succeceded
2510: Trigger(2536) succeceded
2510: Trigger(2536) succeceded
2510: Trigger(2536) succeceded
2510: Trigger(2536) succeceded
2520: enter Receive()
2510: Trigger(2536) failed: No such process
2510: Trigger(2536) failed: No such process
2510: Trigger(2536) failed: No such process
2510: Trigger(2536) failed: No such process
2510: Trigger(2536) failed: No such process
2510: Trigger(2536) failed: No such process
Grateful for any help/insight.
thanks in advance
–
Per Åkesson
Carmenta AB
SWEDEN