window only after the child is started and begins writing messages onto the fifo file[ :\pp \system\processespython pipefifo py parent got "spam at parent got "spam at parent got "spam at parent got "spam at parent got "spam at parent got "spam at parent got "spam at parent got "spam at parent got "spam at parent got "spam at parent got "spam at parent got "spam at etcctrl- to exit parent window [ :\pp \system\processes]file /tmp/pipefifo /tmp/pipefifofifo (named pipechild window [ :\pp \system\processes]python pipefifo py -child ctrl- to exit named pipe use cases by mapping communication points to file system entity accessible to all programs run on machinefifos can address broad range of ipc goals on platforms where they are supported for instancealthough this section' example runs independent programsnamed pipes can also be used as an ipc device by both in-process threads and directly forked related processesmuch as we saw for anonymous pipes earlier by also supporting unrelated programsthoughfifo files are more widely applicable to general client/server models for examplenamed pipes can make the gui and command-line debugger integration described earlier for anonymous pipes even more flexible--by using fifo files to connect the gui to the non-gui debugger' streamsthe gui could be started independently when needed sockets provide similar functionality but also buy us both inherent network awareness and broader portability to windows--as the next section explains socketsa first look socketsimplemented by the python socket moduleare more general ipc device than the pipes we've seen so far sockets let us transfer data between programs running on the same computeras well as programs located on remote networked machines when used as an ipc mechanism on the same machineprograms connect to sockets by machine-global port number and transfer data when used as networking connectionprograms provide both machine name and port number to transfer data to remotely-running program parallel system tools