Hello Jon!
Thank you for your reply.
On Oct 12, 2012, at 11:07 PM, Jon Dyte wrote:
> On 12/10/12 09:33, John Khvatov wrote:
>> Hello Pieter,
>>
>> I don't need ZMQ in forked process, but I need forked processes after
>> creating context in parent process. I don't want that the forked process
>> holds ZMQ resources. So, if parent has created context and has retain
>> resources, why it can't release them after fork()?
>
> John
>
> The parent does free the resources. The problem is that some of the os
> supplied resources(ie file descriptors in this case) are 'cloned' by yr
> fork in the child.
I understand it. Sad that zmq api does not allow to release cloned resources in
child.
> You could call
> getdtablesize() and get the number of descriptors the process can have
> open, or use OPEN_MAX and just close all the descriptors above 3
>
>
> if (pid == 0) {
> int i;
> int max_fds;
> if (( max_fds = getdtablesize()) == -1) max_fds = OPEN_MAX;
> for (i = 3 ; i < max_fds ; ++i) close(i);
> /* child 'work' begins here */
> sleep(3600);
> }
>
>
> BUT this does rely on the fact that other libraries and code(static
> initialisers etc etc) that are part of the initial process havent
> created fd's in the parent that the child will subsequently need.
Unfortunately this is my case.
--
WBR, John Khvatov
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev