Что анализирует аргументы командной строки в args [] в Windows? - PullRequest
4 голосов
/ 19 сентября 2019

В Windows функция CreateProcess win32 используется для создания нового процесса.Сигнатура этой функции принимает указатель на «командную строку» lpCommandLine, поэтому командная строка передается в виде одной строки.

Каждый язык, с которым я знаком (C, C ++, C #,Java) позволяет функцию main, которая принимает массив строк.Итак, где-то между CreateProcess и main должно быть что-то, что анализирует lpCommandLine и превращает его в args[].

Где находится этот код анализа?Является ли она частью ОС (внутри CreateProcess), или она является частью "среды выполнения" каждого языка (код, который запускается внутри нового процесса до вызова main)?

1 Ответ

3 голосов
/ 19 сентября 2019

Код запуска, связанный с программой, которую вы запускаете.Например, для C это crt0.c.

Созданный процесс начинает выполнение в пользовательском режиме с некоторой объявленной точки входа, которая не является main.Это среда выполнения C, которая вызывает main.

Когда я был программистом Windows C, исходный код среды выполнения C был включен в SDK.

...