os.dup2(1, 2)
Примеры с подсветкой
Давайте выполним /bin/ls
с поддельным аргументом, чтобы он жаловался на stderr.
$ python -c "import os; os.execl('/bin/ls', '', 'ffweew')" 1>/dev/null
: ffweew: No such file or directory
$ python -c "import os; os.execl('/bin/ls', '', 'ffweew')" 2>/dev/null
$ python -c "import os; os.dup2(1, 2); os.execl('/bin/ls', '', 'ffweew')" 1>/dev/null
$ python -c "import os; os.dup2(1, 2); os.execl('/bin/ls', '', 'ffweew')" 2>/dev/null
: ffweew: No such file or directory
$
Первые два вызова доказывают, что ls
не записывает в stdout и записывает сообщение об ошибке в stderr.
В 3-м и 4-м вызовах программа Python дублирует дескриптор файла 1 как дескриптор файла 2, достигаяжелаемый эффект.