On Thu, 06 Jun 2013 12:05:14 -0400, nazriel <[email protected]> wrote:

Would it be possible to add to std.process.Config POSIX specific callback which would be called after fork()?

It is currently main blocker in switching dpaste-be from handmade process handling module to std.process.

It could look something like this.

struct Config {
      // current fields
      void delegate() posixCallback;
}

// ...

int i = fork();
if (i > 0)
{
//...
    if (config.posixCallback !is null)
         config.posixCallback();
//...
}

Such construct would allow for various child process manipulation, for instance
dropping root privileges or setting limits via setrmlimit.

Example:

config.posixCallback = {
     setguid(ourGUID);
     setgroups(ourGROUPS);
     setuid(ourUID);

     setrmlimit(NFORK, 123);
};


AFAIK we already have Windows specific flag related to spawning console for GUI apps.

I can make pull request ASAP when I get reasonable name for field.

Lars? ;)

I agree with the ability, but not with the interface. If this is to be done, it should be at a lower level, not inside config. Keep in mind that std.process is generalized for both Windows and Posix, with very minor differences.

-Steve

Reply via email to