The node the child should be on.
The port to BProc should connect back to for I/O forwarding.
The program to execute
The argument list
This call has semantics similar to execve. It replaces the current process with a new one. The new process is created on node and the local process becomes the ghost representing it. All arguments are interpreted on the remote machine. The binary and all libraries it needs must be present on the remote machine. Currently, if remote process creation is successful but exec fails, the process will just exit with status 1. If remote process creation fails, the function will return -1 and errno is set appropriately.
port is the TCP port BProc should connect back to to handle I/O forwarding. A port value of 0 means it assumes I/O forwarding is being done on the existing socket for stdout and stderr only. 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 stdin.
If you use bproc_execmove, port has a default value of 0.
The filesystem where cmd resides is mounted nosuid and the program is suid or sgid
Out of memory
cmd, envp, or argv points to memory that is not accessible the by the program.
The program does not have execute permission on cmd
Argument list is too big
cmd is not in a recognized executable format or is for the wrong architecture
cmd is too long
cmd does not exist.
Part of the path to cmd is not a directory.
Too many symbolic links were encountered when resolving cmd.
cmd is open for writing by another program.
An I/O error occurred.
The limit on open files has been reached.
An ELF executable had more than one PT_INTERP segment.