/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Proc_Fork(PROC_STAT *proc, int *pipefds, void (*cbfunc)(int, short), int timeout)
{
pid_t pid;
+ unsigned int seed;
assert(proc != NULL);
assert(pipefds != NULL);
return -1;
}
+ seed = (unsigned int)rand();
pid = fork();
switch (pid) {
case -1:
return -1;
case 0:
/* New child process: */
+ srand(seed ^ (unsigned int)time(NULL) ^ getpid());
Signals_Exit();
signal(SIGTERM, Proc_GenericSignalHandler);
signal(SIGALRM, Proc_GenericSignalHandler);
return (size_t)bytes_read;
}
+/**
+ * Close pipe to a forked child process.
+ */
+GLOBAL void
+Proc_Close(PROC_STAT *proc)
+{
+ io_close(proc->pipe_fd);
+ Proc_InitStruct(proc);
+}
+
/* -eof- */