Библиотека сайта rus-linux.net
Цилюрик О.И. Linux-инструменты для Windows-программистов | ||
Назад | Библиотеки API POSIX | Вперед |
Окружение процесса
Обработка опций командной строки
Стандартные утилиты Linux используют, в основном,
единый формат опций указания (ключей) и параметров командной строки,
который обеспечивается функцией getopt()
,
как показано в примере (архив hello-prog.tgz
):
mgetopt.c : #include <stdio.h> #include <unistd.h> #include <stdlib.h> int main( int argc, char *argv[] ) { char sopt[] = "d:t:v"; int c, dev = 0, tim = 0, debug_level = 0; while( -1 != ( c = getopt( argc, argv, sopt ) ) ) switch( c ) { case 'd': dev = atoi( optarg ); break; case 't': tim = atoi( optarg ); break; case 'v':. debug_level++; break; default : fprintf( stdout, "option must be: %s\n", sopt ); } printf( "options value was:" ); printf( "\td:%d\tt:%d\tv:%d\n", dev, tim, debug_level ); printf( "parameters was:" ); for( c = optind; c < argc; c++ ) printf( "\t<%s>", argv[ c ] ); printf( "\n" ); return 0; };
Вот как выполняется этот пример:
$ ./mgetopt -t 3 -d2 options value was: d:2 t:3 v:0 parameters was: $ ./mgetopt -s ./mgetopt: invalid option -- 's' option must be: d:t:v options value was: d:0 t:0 v:0 parameters was:
И вот как он разделяет опции (ключи) от параметров, заданных в командной строке, даже если они указаны вперемешку:
$ ./mgetopt -d 1 arg1 -t 2 arg2 -vvv options value was: d:1 t:2 v:3 parameters was: <arg1> <arg2>
Предыдущий раздел: | Оглавление | Следующий раздел: |
Библиотеки API POSIX | Параллельные процессы |