Почему с помощью команды './myFile' intepreted как входной параметр?

После компиляции программы с g++ -o myFile myFile.cpp Я использовал ./myFile & выполнять программу.

При использовании амперсанда я понимаю, что программа выполняется в фоновом режиме.

Может кто-то направлять меня к правильной ссылке, объясняющей что ./myFile a средства? Я не понимаю почему использование команды a intepreted как входной параметр.

0
задан 7 February 2016 в 21:26

2 ответа

Перечитывание Вашего вопроса снова, я думаю, что понимаю то, что Вы спрашиваете.

Независимо от того, что Вы вводите в командной строке, интерпретируется базовой оболочкой (если Вы не изменили ее, Bash).

существует много Bash шагов, проходит прежде на самом деле выполнить команду:

, Когда вход чтений оболочки, это продолжается через последовательность операций. Если вход указывает на начало комментария, оболочка игнорирует символ комментария (†˜#’), и остальная часть той строки.

Иначе, примерно разговор, оболочка читает свой вход и делит вход на слова и операторы, используя правила заключения в кавычки выбрать который значения присвоить различные слова и символы.

оболочка затем анализирует эти маркеры в команды и другие конструкции, удаляет особое значение определенных слов или символов, разворачивает других, перенаправляет ввод и вывод по мере необходимости, выполняет указанную команду, ожидает command’s статуса выхода и делает тот статус выхода доступным для дальнейшего контроля или обработки.

Независимо от того, что оставляют направо от команды, разграниченной любой последовательностью разделителей, содержавшихся в $IFS, обычно , \t и \n после того, как Bash имеет, прошел шаги, обрисованные в общих чертах выше, интерпретируется как аргумент программе: не будучи техническим, это означает, что каждый маркер сделан доступным для программы, которая может использовать его способ, которым он хочет.

более конкретно то, что происходит под капотом, - то, что каждый маркер передается как аргумент execve() syscall, который запускает программу и становится доступным программе до argv (указатель на указатель на символ, часто включаемый в объявление / определение main()), к которому программа может получить доступ для получения аргументов.

6
ответ дан 29 September 2019 в 12:37

Оболочка обрабатывает параметры.

, Который будет препятствовать тому, чтобы оболочка делала его:

./myFile '&'

Так, программа получит & в качестве параметра.

Другой пример:

./myFile *

Это развернет звезду в целый список параметров - имена файлов файлов в текущем каталоге.

3
ответ дан 29 September 2019 в 12:37

Другие вопросы по тегам:

Похожие вопросы: