Есть ли в процессе какие-либо четко определенные каналы, такие как stdin, stdout и stderr? - PullRequest
2 голосов
/ 14 января 2012

Существует ограничение в 8 730 на количество каналов z / OS UNIX, которые могут быть одновременно открыты в системе.Я написал программу для проверки возможности достижения этого предела.Я выполнил эту программу много раз, и результат показывает, что создание 8727-го канала не удастся.

Я предполагаю, что есть 3 четко определенных канала для STDIN, STDOUT, STDERR, определенных, когда программа UNIX начинает выполняться.Но я не могу найти никаких документов, в которых упоминаются «каналы по умолчанию», поэтому мне интересно, верна ли моя догадка?

Ответы [ 2 ]

1 голос
/ 14 января 2012

Если это ограничение для всей системы, то что-то еще, какой-то другой процесс, имеет открытые каналы.

Под каналами вы подразумеваете fifos, которые представляют собой особый тип файла, и потоки (stdin, stdout, stderr) не начинают жизнь как каналы, но их можно перенаправить на каналы.Смотрите страницу man dup () и mkfifo ().

0 голосов
/ 14 января 2012

Ваше предположение верно. Они называются стандартными потоками .

В Unix и Unix-подобных операционных системах (и, в некоторой степени, в Windows), а также в некоторых интерфейсах языков программирования стандартные потоки предварительно соединены каналами ввода и вывода между компьютерной программой и ее среда (обычно текстовый терминал), когда начинается выполнение. Три соединения ввода / вывода называются стандартным входом (stdin), стандартным выходом (stdout) и стандартной ошибкой (stderr).

...