bproc_rfork – fork, with the child ending up on a remote node.
#include <sys/bproc.h> int _bproc_rfork_io (int node, int flags, int port); int _bproc_rfork (int node, int flags); int bproc_rfork (int node);
The node the child should be on.
BProcshould connect back to for I/O forwarding.
The semantics of this function are designed to mimic
that the child process created will end up on the node given by the node
argument. The process forks a child and that child performs a
bproc_move to move itself to the remote node. Combining these two
operations in a system call prevents zombies and
SIGCHLDs in the
case that the fork is successful but the move is not.
On success, this function returns the process ID of the new child
process to the parent and 0 to the child. On failure it returns -1, and
errno is set appropriately.
node is the node the child should be on.
flags can be one of the following:
BPROC_DUMP_OTHER or any combination of them
binary OR’d together. If you with to use all of them, you can also use
BPROC_DUMP_ALL as a shortcut. These flags tell
VMAdump how much
of the running process to dump and send to the compute node.
port is the port
BProc should connect back to for I/O
forwarding. A port value of zero means it assumes I/O forwarding is
being done on the existing socket for
Any other value and it will try to connect back to that port and open
three connections, one for
stdout, one for
stderr, and one for
If you use
bproc_rfork, port has a default value
of 0. If you use
flags takes a default value that
BPROC_DUMP_OTHER, if you are trying to
move to an up node or the master, otherwise it is
For the parent process, this will return the PID of the child process.
For the child process, this will return 0.
If there is an error, -1 will be returned to the parent process and there will be no child process.