Вы можете использовать backtics для выполнения вашей внешней программы и захвата ее stdout
и stderr
.
По умолчанию обратные выходы отбрасывают stderr
и возвращают только stdout
внешней программы. Так
$output = `cmd`;
Удерживает stdout
программы cmd и discard stderr
.
Чтобы записать только stderr
, вы можете использовать дескрипторы файла оболочки как:
$output = `cmd 2>&1 1>/dev/null`;
Чтобы захватить как stdout
, так и stderr
, вы можете сделать :
$output = `cmd 2>&1`;
Используя вышеизложенное, вы не сможете различать stderr
с stdout
. Для separte stdout
из stderr
можно перенаправить оба файла в отдельный файл и прочитать файлы:
`cmd 1>stdout.txt 2>stderr.txt`;
Я думаю, вы должны получить какую-нибудь книгу или учебник по этому вопросу.
Как и @Some программист, чувак сказал: «Каждый порт является исключительно TCP или UDP». Например: для HTTP-порта по умолчанию TCP равен 80, для Telnet 23, для DHCP-порта 67/68 DHCP и т. Просмотр этой страницы в Википедии может очистить ваше сомнение: здесь