Daemonizing Command Line Programs ================================= nclib ships with a utility script called ``serve-stdio`` that can turn any program operating over stdin and stdout into a network service. This is a task usually accomplished with ``xinetd`` or ``socat``, but for simple one-off applications, this is much easier, and a good demonstration of nclib's capabilities. Once you've installed nclib, the program ``serve-stdio`` should be installed to your path, and you should be able to run it!:: $ serve-stdio Usage: serve-stdio [options] port command ... Options: -d Daemonize, run in background -e Redirect program's stderr to socket -E Hide program's stderr -b addr Bind to a specific address Example usage:: $ serve-stdio -d 1234 echo hey 13282 $ nc localhost 1234 hey By default, the process' stderr stream will be untouched and will probably end up printed to your terminal. If you want the socket to see the process' stderr, you can use the -e flag. If you want the process' stderr to go away entirely, you can use the -E flag. How does it work? It's a very short python script using nclib! The heart of it is just these three lines:: for client in nclib.TCPServer((bind_addr, port)): print('Accepted client %s:%d' % client.peer) nclib.Process.launch(command, client, stderr=show_stderr) Pretty cool!