Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Цилюрик О.И. 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   Параллельные процессы