telefork
Check out the blog post I wrote about this project!
Basically it's like the fork()
syscall except it can fork a process onto a
different computer. It does this using a bunch of ptrace magic to serialize
the memory mappings of the process, stream them over a pipe and recreate them
on the other end along with the registers and some other process state.
How it works
Read the code in src/lib.rs!
. I specifically wrote it all in one file with
tons of comments in an order meant to read top to bottom. Hopefully it should
be easy enough to understand what it's doing, provided some familiarity with
systems programming concepts.
Examples
basic
andload
: Save and restore a process state to a fileteleserver
andteleclient
: Fork a process to a remote serveryoyo_client
andyoyo_client_raw
: Execute a closure on a remote server by teleforking there and backsmallpt
: Useyoyo
to run a path tracing render on a remote server from a local executable.