Linux²Ù×÷ϵͳµÄ³ÌÐòÃüÁîÐд¦Àí·ÖÎö
¡¡¡¡GNU£¯LinuxÃüÁîÐÐÏ°¹ß
¡¡¡¡¼¸ºõËùÓеÄGNU/Linux³ÌÐò¶¼×ñÑһЩͬÑùµÄÃüÁîÐнâÊÍÏ°¹ß£¬³ÌÐòµÄ²ÎÊýͨ³£·ÖΪÁËÁ½´óÀࣺѡÏî(option)»òÕßһЩ±êÖ¾(flag)¡¢ÆäËû²ÎÊý¡£Ñ¡Ïoption£©Ö÷ÒªÊÇÌṩ¸ø³ÌÐòһЩÔËÐÐÉϵÄÑ¡Ôñ£¬¶øÆäËû²ÎÊýÔòͨ³£ÊÇÌṩ¸ø³ÌÐòÔËÐеÄÊäÈëÖ®ÀàµÄÖµ¡£°´ÕÕÏ°¹ß£¬Ñ¡Ïîͨ³£ÓÐÁ½ÖÖ±í´ïÐÎʽ£º
¡¡¡¡¶ÌÐÎʽ£ºÍ¨³£ÊÇÓÉÒ»¸ö¡°£¡±¼ÓÉÏÒ»¸ö×Öĸ×éºÏ¶ø³É¡£ÕâÖÖÐÎʽµÄºÃ´¦ÊÇÊäÈë¿ì½Ý¡£
¡¡¡¡³¤ÐÎʽ£ºÍ¨³£ÊÇÓÉÁ½¸ö¡°£¡±¼ÓÉÏÒ»¸öµ¥´Ê×éºÏ¶ø³É¡£ÕâÖÖÐÎʽµÄºÃ´¦ÊÇÐÎÏ󡢺üǡ¢Ö±¹Û¡£
¡¡¡¡Í¨³£À´Ëµ£¬Ò»¸ö³ÌÐò¶ÁÓÚÕâÁ½ÖÖÐÎʽ¶¼Ö§³Ö¡£ÀýÈç´ó¶àÊýµÄ³ÌÐò¶¼ÓÐÕâÑùµÄµ÷ÓÃÑ¡Ï¡°£h¡±ºÍ¡°¡ª¡ªhelp¡±¡£Ò»Ð©Ñ¡ÏîÐèÒªÖªµÀºóÃæ¸ú×ŵIJÎÊý£¬ÀýÈç¡°ls -s /¡±£¬ÕâÀïÆäÖеġ°£¯¡±¾ÍÊÇÒ»¸ö²ÎÊý¡£
¡¡¡¡Ê¹ÓÃgetopt_longº¯ÊýÀ´´¦Àí
¡¡¡¡¶ÔÓÚÒ»¸öÃüÁîÐеķÖÎö´¦ÀíÊǺܵ¥µ÷·¦Î¶µÄ¹¤×÷£¬ÐèÒª×ö´óÁ¿µÄÖîÈç×Ö·û´®µÄÆ¥ÅäÖ®ÀàµÄ²Ù×÷£¬²»¹ýÐÒÔ˵ÄÊÇ£¬GNU Cº¯Êý¿â ÀïÃæÌṩÁËÒ»¸öº¯ÊýÄܹ»Ê¹µÃÕâÏ×÷±äµÃÈÝÒ׵öࡣµ±È»Ò²ÐíÈÔȻûÓÐÄãÏëÏóµÄÄÇôÈÝÒס£getopt_longÕâ¸öº¯Êý¾ÍÄܹ»Í¬Ê±¡°Àí½â¡±³¤ÐÎʽºÍ¶ÌÐÎʽµÄ²ÎÊý¡£
¡¡¡¡ÏÂÃæÎÒÃÇͨ¹ýÒ»¸öʵÀýÀ´Ñ§Ï°Õâ¸öº¯ÊýµÄʹÓá£
¡¡¡¡¼ÙÉèÎÒÃÇÒª±àдµÄÒ»¸ö³ÌÐòÐèÒª´¦ÀíÒÔϼ¸¸ö²ÎÊý£º
¶ÌÐÎʽ ³¤ÐÎʽ º¬Òå
£h ¡ª¡ªhelp ´òÓ¡°ïÖúÐÅÏ¢
£s ¡ª¡ªserver ·þÎñÆ÷IPµØÖ·
£b ¡ª¡ªbackground ºǫִ́ÐÐ
¡¡¡¡ÒªÊ¹ÓÃgetopt_long£¨£©Õâ¸öº¯Êý£¬ÎÒÃÇÐèÒªÌṩÁ½¸öÊý¾Ý½á¹¹£¬µÚÒ»¸öÊÇÒ»¸ö×Ö·û´®£¬¸Ã×Ö·û´®ÖеÄÿ¸ö×Ö·ûÀ´±íʾ¶ÌÐÎʽµÄÑ¡ÏÈç¹ûij¸öÑ¡ÏîºóÃæÐèÒª¸úÒ»¸ö²ÎÊý£¬ÄÇô¾ÍÐèÒªÔÚÕâ¸ö×Ö·ûºóÃæ¼ÓÉÏÒ»¸ö¡°£º¡±£¨Ã°ºÅ£©£¬ÀýÈç¡°hs:b¡±¾ÍÊÇÎÒÃÇÕâ¸öÀý×ÓÖеĽṹ¡£ÎªÁ˶¨Ò峤ÐÎʽ±í´ïµÄÑ¡ÏÎÒÃÇÐèÒª¶¨Ò»¸ö½á¹¹ÌåÊý×é¡£Êý×éµÄÿһÏîÓëÒ»¸ö³¤ÐÎʽµÄ²ÎÊýÏà¹Ø£¬Ã¿Ïî°üÀ¨Ëĸö²ÎÊý£ºÍ¨³£À´Ëµ£¬µÚÒ»ÏîÊdz¤ÐÎʽµÄÑ¡ÏîµÄ×Ö·û´®±í´ï£»µÚ¶þÏîÓëºóÃæÊÇ·ñÓвÎÊýÌáÈ¡Óйأ¬Èç¹ûºóÃæÓвÎÊýÐèÒª´¦Àí¾ÍÊÇ1£¬·ñÔòÊÇ0£»µÚÈýÏîÊÇNULL£»×îºóÒ»ÏîÔòÊÇÓ볤ÐÎʽÏà¹ØÁªµÄ¶ÌÐÎʽ±í´ïµÄ×Ö·û¡£ÁíÍ⣬Õâ¸öÊý×éµÄ×îºóÒ»Ïî±ØÐëÈ«²¿ÖÃΪ0¡£
¡¡¡¡¸ù¾ÝÉÏÃæµÄ˵Ã÷£¬¶ÔÓÚÎÒÃǵÄÀý×Ó£¬¿ÉÒԵõ½ÏÂÃæµÄÒ»¸öÊý×飺
const struct option long_options [] =={
{¡°help ¡±,0,NULL,¡®h ¡¯ }},
{¡°server ¡±,1,NULL,¡®s ¡¯ }},
{¡°background¡±,0,NULL,¡®b ¡¯ }},
{NULL,0,NULL,0 }
};
¡¡¡¡ÎÒÃÇ°Ñ´«¸ømainº¯ÊýµÄ²ÎÊý¸øgetopt_long£¬Ëû¾ÍÒ»ÏîÒ»ÏîµÄ¶ÁÈ¡´¦Àí£¬·µ»Ø¶ÌÐÎʽ±í´ïµÄÑ¡ÏîµÄ×Ö·û£¬Èç¹ûûÓÐÕÒµ½Ñ¡ÏîÔò·µ»Ø£1¡£Í¨³£ÎÒÃǶ¼ÊÇÔÚÒ»¸öÑ»·ÀïÃæ·´¸´µ÷ÓÃgetopt_long£¬È»ºóͨ¹ýÒ»¸öswitchÓï¾äÀ´´¦Àí²»Í¬µÄÑ¡Ïî¡£Èç¹ûgetopt_longÓöµ½Ò»¸öûÓж¨ÒåµÄÑ¡ÏÔò»á·µ»ØÒ»¸ö¡°£¿¡±£¨Îʺţ©×Ö·û¡£ÏÂÃæÊÇÎÒÃǵÄÀý×Ó£¬ÕâÊÇÒ»¸öºÜµäÐ͵Ĵ¦Àí¹ý³Ì£º
#include
#include
#include
const char*program_name;
void print_usage (FILE*stream,int exit_code)
{
fprintf (stream,¡°Usage:%s options [ inputfile ....]
¡±,program_name);
fprintf (stream,
¡° -h --help Display this usage information.
¡±
¡° -s --server ip Set the server IP.
¡±
¡° -b --background run in the backgound.
¡±);
exit (exit_code);
}
int main (int argc,char*argv [])
{
int next_option;
const char*const short_options =¡°hs:b ¡±;
const struct option long_options [] =={
{¡°help ¡±,0,NULL,¡®h ¡¯ }},
{¡°server¡±,1,NULL,¡®s ¡¯ }},
{¡°background ¡±,0,NULL,¡®b ¡¯ }},
{NULL,0,NULL,0 }
};
const char*output_filename =NULL;
int verbose =0;
program_name =argv [0 ];
do {
next_option =getopt_long (argc,argv,short_options,
long_options,NULL);
switch (next_option)
{
case ¡®h ¡¯:/*-h or --help */
print_usage (stdout,0);
case ¡®s ¡¯:/*-o or --output */
//ip =optarg;
break;
case ¡®b ¡¯:/*-v or --verbose */
break;
case ¡®?¡¯:/*The user specified an invalid option.*/
code one (indicating abnormal termination).*/
print_usage (stderr,1);
case -1:/*Done with options.*/
break;
default:/*Something else:unexpected.*/
abort ();
}
}
while (next_option !=-1);
/*The main program goes here.*/
return 0;
}
Gones ÓÚ 2008-07-01 21:13:05·¢±í:
¶¥Ò»¸öÏÈ!