Skip to main content

Posts

Showing posts from November, 2011

Linux File Descriptor Explained

Basics A Linux file descriptor is an integer for accessing a file like object(file, socket, FIFO, ... ). File descriptors is a per process concept, we may get a list of file descriptor of a process at /proc/PID/fd/     or use command lsof:  lsof -p pid Standard input, output and error Every process have 3 file descriptors in default: that is 0 for stdin, 1 for stdout, and 2 for stderr. For example, a shell command "cmd > log.txt" only pipe the stdout of cmd to log.txt in default. Use "cmd > log.txt 2>&1" will pipe both the stdout and the stderr to the log.txt file. "2>&1" means redirecting stderr to stdout. For example: python -c "import sys;sys.stdout.write('abc')" > abc.txt abc.txt will be 'abc'. python -c "import sys;sys.stderr.write('abc\n')" > abc.txt 2>&1 abc.txt will be a blank file.   python -c "import sys;sys.stderr.write('abc\n&#