Теоретический максимум ограничен сегментацией памяти, используемой на ЦП, например, X86-64 использует абсолютный механизм (сегменты запускаются в 0 и имеют вместимость 264), но сама ОС может осуществить искусственные пределы на размер процесса.
Из описания POSIX exec
:
должностное лицо - выполняет команды и открытый, близко, или копирует дескрипторы файлов
В этом случае нет никакой команды, поэтому только дескрипторы файлов изменяются. Обычно, перенаправления, которые Вы пишете на командной строке, влияют на команду на той строке. exec
то, как Вы делаете перенаправления на в настоящее время выполняющейся оболочке.
Интуитивному пониманию можно помочь путем наблюдения этого шаблона:
cmd # fork; execute cmd in child
cmd < /dev/null # fork; redirect stdin and execute cmd in child
exec cmd # execute cmd; no fork
exec cmd < /dev/null # redirect stdin and execute cmd; no fork
exec < /dev/null # redirect stdin; no fork and no execution
Посмотрите, exec
не действительно вещь. Это - антивещь. Это не означает, "выполняются" вообще. Это означает, "не разветвляются". Это заставляет выполнение перенаправления и/или команды команды произойти в текущем процессе.
exec
отдельно мог считаться пустой операцией, за исключением установки$?
к 0. – jw013 29.08.2012, 19:52