ºìÁªLinuxÃÅ»§
Linux°ïÖú

Linux³ÌÐòµÄÃüÁîÐд¦Àí

·¢²¼Ê±¼ä:2006-08-27 09:43:15À´Ô´:ºìÁª×÷Õß:pinkfirex
¡¡¡¡¼¸ºõËùÓеÄGNU/Linux³ÌÐò¶¼×ñѭһЩͬÑùµÄÃüÁîÐнâÊÍϰ¹ß£¬³ÌÐòµÄ²ÎÊýͨ³£·ÖΪÁËÁ½´óÀࣺѡÏî(option)»òÕßһЩ±êÖ¾(flag)¡¢ÆäËû²ÎÊý¡£Ñ¡Ïoption£©Ö÷ÒªÊÇÌṩ¸ø³ÌÐòһЩÔËÐÐÉϵÄÑ¡Ôñ£¬¶øÆäËû²ÎÊýÔòͨ³£ÊÇÌṩ¸ø³ÌÐòÔËÐеÄÊäÈëÖ®ÀàµÄÖµ¡£°´ÕÕϰ¹ß£¬Ñ¡Ïîͨ³£ÓÐÁ½ÖÖ±í´ïÐÎʽ£º
¡¡¡¡
[code]¡¡¡¡¡¡¡¡¡§ ¶ÌÐÎʽ£ºÍ¨³£ÊÇÓÉÒ»¸ö¡°£­¡±¼ÓÉÏÒ»¸ö×Öĸ×éºÏ¶ø³É¡£ÕâÖÖÐÎʽµÄºÃ´¦ÊÇÊäÈë¿ì½Ý¡£
¡¡¡¡
¡¡¡¡¡¡¡¡¡§ ³¤ÐÎʽ£ºÍ¨³£ÊÇÓÉÁ½¸ö¡°£­¡±¼ÓÉÏÒ»¸öµ¥´Ê×éºÏ¶ø³É¡£ÕâÖÖÐÎʽµÄºÃ´¦ÊÇÐÎÏ󡢺üǡ¢Ö±¹Û¡£[/code]
¡¡¡¡
¡¡¡¡¡¡¡¡Í¨³£À´Ëµ£¬Ò»¸ö³ÌÐò¶ÁÓÚÕâÁ½ÖÖÐÎʽ¶¼Ö§³Ö¡£ÀýÈç´ó¶àÊýµÄ³ÌÐò¶¼ÓÐÕâÑùµÄµ÷ÓÃÑ¡Ï¡°£­h¡±ºÍ¡°¡ª¡ªhelp¡±¡£Ò»Ð©Ñ¡ÏîÐèÒªÖªµÀºóÃæ¸ú×ŵIJÎÊý£¬ÀýÈç¡°ls -s /¡±£¬ÕâÀïÆäÖеġ°£¯¡±¾ÍÊÇÒ»¸ö²ÎÊý¡£
¡¡¡¡
¡¡¡¡¡¡¡¡Ê¹ÓÃgetopt_longº¯ÊýÀ´´¦Àí
¡¡¡¡
¡¡¡¡¡¡¡¡¶ÔÓÚÒ»¸öÃüÁîÐеķÖÎö´¦ÀíÊǺܵ¥µ÷·¦Î¶µÄ¹¤×÷£¬ÐèÒª×ö´óÁ¿µÄÖîÈç×Ö·û´®µÄÆ¥ÅäÖ®ÀàµÄ²Ù×÷£¬²»¹ýÐÒÔ˵ÄÊÇ£¬GNU Cº¯Êý¿â ÀïÃæÌṩÁËÒ»¸öº¯ÊýÄܹ»Ê¹µÃÕâÏ×÷±äµÃÈÝÒ׵öࡣµ±È»Ò²ÐíÈÔȻûÓÐÄãÏëÏóµÄÄÇôÈÝÒס££º£©£©getopt_longÕâ¸öº¯Êý¾ÍÄܹ»Í¬Ê±¡°Àí½â¡±³¤ÐÎʽºÍ¶ÌÐÎʽµÄ²ÎÊý£¬ÐèÒª°üÀ¨µÄÍ·ÎļþÊÇ
¡¡¡¡
¡¡¡¡¡¡¡¡ÏÂÃæÎÒÃÇͨ¹ýÒ»¸öʵÀýÀ´Ñ§Ï°Õâ¸öº¯ÊýµÄʹÓá£
¡¡¡¡
¡¡¡¡¡¡¡¡¼ÙÉèÎÒÃÇÒª±àдµÄÒ»¸ö³ÌÐòÐèÒª´¦ÀíÒÔϼ¸¸ö²ÎÊý£º
¡¡¡¡
[code]¡¡¡¡¡¡¡¡¶ÌÐÎʽ ³¤ÐÎʽ º¬Òå
¡¡¡¡
¡¡¡¡¡¡¡¡£­h ¡ª¡ªhelp ´òÓ¡°ïÖúÐÅÏ¢
¡¡¡¡
¡¡¡¡¡¡¡¡£­s ¡ª¡ªserver ·þÎñÆ÷IPµØÖ·
¡¡¡¡
¡¡¡¡¡¡¡¡£­b ¡ª¡ªbackground ºǫִ́ÐÐ[/code]
¡¡¡¡
¡¡¡¡¡¡¡¡ÒªÊ¹ÓÃgetopt_long£¨£©Õâ¸öº¯Êý£¬ÎÒÃÇÐèÒªÌṩÁ½¸öÊý¾Ý½á¹¹£¬µÚÒ»¸öÊÇÒ»¸ö×Ö·û´®£¬¸Ã×Ö·û´®ÖеÄÿ¸ö×Ö·ûÀ´±íʾ¶ÌÐÎʽµÄÑ¡ÏÈç¹ûij¸öÑ¡ÏîºóÃæÐèÒª¸úÒ»¸ö²ÎÊý£¬ÄÇô¾ÍÐèÒªÔÚÕâ¸ö×Ö·ûºóÃæ¼ÓÉÏÒ»¸ö¡°£º¡±£¨Ã°ºÅ£©£¬ÀýÈç¡°hs:b¡±¾ÍÊÇÎÒÃÇÕâ¸öÀý×ÓÖеĽṹ¡£ÎªÁ˶¨Ò峤ÐÎʽ±í´ïµÄÑ¡ÏÎÒÃÇÐèÒª¶¨Ò»¸ö½á¹¹ÌåÊý×é¡£Êý×éµÄÿһÏîÓëÒ»¸ö³¤ÐÎʽµÄ²ÎÊýÏà¹Ø£¬Ã¿Ïî°üÀ¨Ëĸö²ÎÊý£ºÍ¨³£À´Ëµ£¬µÚÒ»ÏîÊdz¤ÐÎʽµÄÑ¡ÏîµÄ×Ö·û´®±í´ï£»µÚ¶þÏîÓëºóÃæÊÇ·ñÓвÎÊýÌáÈ¡Óйأ¬Èç¹ûºóÃæÓвÎÊýÐèÒª´¦Àí¾ÍÊÇ1£¬·ñÔòÊÇ0£»µÚÈýÏîÊÇNULL£»×îºóÒ»ÏîÔòÊÇÓ볤ÐÎʽÏà¹ØÁªµÄ¶ÌÐÎʽ±í´ïµÄ×Ö·û¡£ÁíÍ⣬Õâ¸öÊý×éµÄ×îºóÒ»Ïî±ØÐëÈ«²¿ÖÃΪ0¡£
¡¡¡¡
¡¡¡¡¡¡¡¡¸ù¾ÝÉÏÃæµÄ˵Ã÷£¬¶ÔÓÚÎÒÃǵÄÀý×Ó£¬¿ÉÒԵõ½ÏÂÃæµÄÒ»¸öÊý×飺
¡¡¡¡
¡¡¡¡
[code]¡¡¡¡const struct option long_options [] =={
¡¡¡¡{¡°help ¡±,0,NULL,¡®h ¡¯ }},
¡¡¡¡{¡°server ¡±,1,NULL,¡®s ¡¯ }},
¡¡¡¡{¡°background¡±,0,NULL,¡®b ¡¯ }},
¡¡¡¡{NULL,0,NULL,0 }
¡¡¡¡};[/code]¡¡¡¡
¡¡¡¡
¡¡¡¡¡¡¡¡ÎÒÃǰѴ«¸ømainº¯ÊýµÄ²ÎÊý¸øgetopt_long£¬Ëû¾ÍÒ»ÏîÒ»ÏîµÄ¶ÁÈ¡´¦Àí£¬·µ»Ø¶ÌÐÎʽ±í´ïµÄÑ¡ÏîµÄ×Ö·û£¬Èç¹ûûÓÐÕÒµ½Ñ¡ÏîÔò·µ»Ø£­1¡£Í¨³£ÎÒÃǶ¼ÊÇÔÚÒ»¸öÑ­»·ÀïÃæ·´¸´µ÷ÓÃgetopt_long£¬È»ºóͨ¹ýÒ»¸öswitchÓï¾äÀ´´¦Àí²»Í¬µÄÑ¡Ïî¡£Èç¹ûgetopt_longÓöµ½Ò»¸öûÓж¨ÒåµÄÑ¡ÏÔò»á·µ»ØÒ»¸ö¡°£¿¡±£¨Îʺţ©×Ö·û¡£ÏÂÃæÊÇÎÒÃǵÄÀý×Ó£¬ÕâÊÇÒ»¸öºÜµäÐ͵Ĵ¦Àí¹ý³Ì£º
¡¡¡¡¡¡
[code]¡¡¡¡#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;
¡¡¡¡}[/code]
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 1 ÌõÆÀÂÛ

  1. tongxiaokun ÓÚ 2006-08-27 18:24:04·¢±í:

    Ç¿ÁÒÖ§³Ö