ACE_TAO
ACE_TAO copied to clipboard
*NIX `ACE_Process::child` is unable to call `setrlimit` after `set*id`
ACE_Process::child
is called after for fork
and various set*id
on UNIX
If calling setrlimit
inside ACE_Process::child
, setrlimit
might return -1
with errno
EPERM
because various set*id
might limit permissions.
See also: https://github.com/DOCGroup/ACE_TAO/blob/44c80da21fe3daed65ce0b19e47b09ba6aa3f438/ACE/ace/Process.cpp#L383-L444
I suggest that separate the above set*id
into a virtual member function named int set_child_uid_gid(ACE_Process_Options&)
so that the user can overload it such as
int ...::set_child_uid_gid(ACE_Process_Optioins& opts)
{
setrlimit ...
return ACE_Process_Options::set_child_uid_gid(opts);
}