Библиотека сайта 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 | Параллельные процессы |
