main()

Точка входа в программу

Прототип:

int main( void );
int main( int argc,
const char *argv[] );
int main( int argc,
const char *argv[],
char *envp[] );

Аргументы main() зависят от выбранной формы функции.

Аргументы:

argc
Число записей в массиве argv.
argv
Массив строк, содержащий аргументы командной строки.
envp
Массив строк, содержащий массив строк, в которых записаны переменные окружения с их значениями.

Описание:

С функции 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 системной библиотеки