static PyObject *
posix_fork(PyObject *self, PyObject *noargs)
{
int pid = fork();
unsigned int forksleep = 1;
int pid;
while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < 32)
if (sleep (forksleep)) break; /* break on signals, e.g. ^C */
forksleep <<= 1;
}
if (pid == -1)
return posix_error();
if (pid == 0)