Точка входа в программу
int main( void );int main( int argc,const char *argv[] );int main( int argc,const char *argv[],char *envp[] );
Аргументы main() зависят от выбранной формы функции.
С функции main() начинается исполнение программы. Пользователь должен сам написать её. Строка запуска программы разбивается на последовательность аргументов командной строки, разделённых пробелами, которые передаются в main() в качестве массива строк argv. Число аргументов передаётся в параметре argc.
Название программы хранится в argv[0]. Последний элемент массива argv - NULL
(argv[argc] это NULL
). Аргументы командной строки, содержащие пробелы, для отправки в main() должны быть заключены в кавычки (которые удаляются из этого аргумента командной строки при заполнении массива argv). Для более подробного описания обратитесь к документации конкретной оболочки.
Аргумент envp содержит массив строк, в которых записаны переменные окружения с их значениями. Данный массив идентичен массиву environ, который определён в заголовочном файле <stdlib.h>
.
Значение, возвращаемое вызывающей программе (обычно операционной системе).
#include <stdio.h>#include <stdlib.h>int main( int argc, char **argv ){int i;for ( i = 0; i < argc; ++i ){printf( "argv[%d] = %s\n", i, argv[i] );}return (EXIT_SUCCESS);}
После запуска программа выведет следующее:
$ ./a.out argv[0] = ./mypgm argv[1] = hhhhh argv[2] = another arg
команда запуска программы mypgm в оболочке:
$ ./mypgm hhhhh "another arg"
ANSI, POSIX 1003.1
abort(), atexit(), _argc, _argv, _auxv, close(), execl(), execle(), execlp(), execlpe(), execv(), execve(), execvp(), execvpe(), _exit(), exit(), getenv(), putenv(), sigaction(), signal(), spawn(), spawnl(), spawnle(), spawnlp(), spawnlpe(), spawnp(), spawnv(), spawnve(), spawnvp(), spawnvpe(), system(), wait(), waitpid()
Предыдущий раздел: Описание API системной библиотеки