fd
A read-only mirror of https://git.kyotam.com/sigrid. It updates only from there.
| Name | Last commit date |
|---|---|
| example | |
| fd.go | |
| fd_test.go | |
| LICENSE.MIT | |
| README.md |
fd
Package fd provides a simple API to pass file descriptors between different OS processes.
It can be useful if you want to inherit network connections from another process without closing them.
Example scenario:
- Running server receives a "let's upgrade" message
- Server opens a Unix domain socket for the "upgrade"
- Server starts a new copy of itself and passes Unix domain socket name
- New copy starts reading data from the socket
- Server sends its state over the socket, also sending the number of network connections to inherit, then it sends those connections using fd.Put()
- New server copy reads the state and inherits connections using fd.Get(), checks that everything is OK and writes an "OK" message to the socket
- Server receives "OK" message and kills itself