После компиляции программы с g++ -o myFile myFile.cpp
Я использовал ./myFile &
выполнять программу.
При использовании амперсанда я понимаю, что программа выполняется в фоновом режиме.
Может кто-то направлять меня к правильной ссылке, объясняющей что ./myFile a
средства? Я не понимаю почему использование команды a
intepreted как входной параметр.
Перечитывание Вашего вопроса снова, я думаю, что понимаю то, что Вы спрашиваете.
Независимо от того, что Вы вводите в командной строке, интерпретируется базовой оболочкой (если Вы не изменили ее, Bash).
существует много Bash шагов, проходит прежде на самом деле выполнить команду:
, Когда вход чтений оболочки, это продолжается через последовательность операций. Если вход указывает на начало комментария, оболочка игнорирует символ комментария (†#’), и остальная часть той строки.
Иначе, примерно разговор, оболочка читает свой вход и делит вход на слова и операторы, используя правила заключения в кавычки выбрать который значения присвоить различные слова и символы.
оболочка затем анализирует эти маркеры в команды и другие конструкции, удаляет особое значение определенных слов или символов, разворачивает других, перенаправляет ввод и вывод по мере необходимости, выполняет указанную команду, ожидает command’s статуса выхода и делает тот статус выхода доступным для дальнейшего контроля или обработки.
Независимо от того, что оставляют направо от команды, разграниченной любой последовательностью разделителей, содержавшихся в $IFS
, обычно ,
\t
и \n
после того, как Bash имеет, прошел шаги, обрисованные в общих чертах выше, интерпретируется как аргумент программе: не будучи техническим, это означает, что каждый маркер сделан доступным для программы, которая может использовать его способ, которым он хочет.
более конкретно то, что происходит под капотом, - то, что каждый маркер передается как аргумент execve()
syscall, который запускает программу и становится доступным программе до argv
(указатель на указатель на символ, часто включаемый в объявление / определение main()
), к которому программа может получить доступ для получения аргументов.
Оболочка обрабатывает параметры.
, Который будет препятствовать тому, чтобы оболочка делала его:
./myFile '&'
Так, программа получит & в качестве параметра.
Другой пример:
./myFile *
Это развернет звезду в целый список параметров - имена файлов файлов в текущем каталоге.