×ۺϸ´Ï°ÊÔÌâ
µÚÒ»²¿·Ö£ºCÓïÑÔ
Ò»¡¢ÇëÌîдBOOL , float, Ö¸Õë±äÁ¿ Óë¡°ÁãÖµ¡±±È½ÏµÄ if Óï¾ä¡£ Ìáʾ£ºÕâÀï¡°ÁãÖµ¡±¿ÉÒÔÊÇ0, 0.0 , FALSE»òÕß¡°¿ÕÖ¸Õ롱¡£ÀýÈç int ±äÁ¿ n Óë¡°ÁãÖµ¡±±È½ÏµÄ if Óï¾äΪ£º if ( n == 0 ) if ( n != 0 ) ÒÔ´ËÀàÍÆ¡£ Çëд³ö BOOL flag Óë¡°ÁãÖµ¡±±È½ÏµÄ if Óï¾ä£º if ( flag ) if ( !flag ) Çëд³ö float x Óë¡°ÁãÖµ¡±±È½ÏµÄ if Óï¾ä£º ±ê×¼´ð°¸Ê¾Àý£º const float EPSINON = 0.00001; if ((x >= - EPSINON) && (x <= EPSINON) ²»¿É½«¸¡µã±äÁ¿Óá°==¡±»ò¡°£¡=¡±ÓëÊý×Ö ±È½Ï£¬Ó¦¸ÃÉ跨ת»¯³É¡°>=¡±»ò¡°<=¡±´Ë ÀàÐÎʽ¡£ Çëд³ö char *p Óë¡°ÁãÖµ¡±±È½ÏµÄ if Óï¾ä£º ±ê×¼´ð°¸£º if (p == NULL) if (p != NULL) ¶þ¡¢ÒÔÏÂΪWindows NTϵÄ32λC++³ÌÐò£¬Çë¼ÆËãsizeofµÄÖµ char str[] = ¡°Hello¡± ; void Func ( char str[100]) char *p = str ; { int n = 10; Çë¼ÆËã Çë¼ÆËã sizeof( str ) = 4 sizeof (str ) = 6 } sizeof ( p ) = 4 void *p = malloc( 100 ); Çë¼ÆËã sizeof ( n ) = 4 sizeof ( p ) = 4 Èý¡¢¼ò´ðÌâ
1¡¢Í·ÎļþÖÐµÄ ifndef/define/endif ¸ÉʲôÓã¿ ´ð£º·ÀÖ¹¸ÃÍ·Îļþ±»Öظ´ÒýÓá£
2¡¢#include
filename.h
3¡¢const ÓÐʲôÓÃ;£¿£¨ÇëÖÁÉÙ˵Ã÷Á½ÖÖ£© ´ð£º
£¨1£©¿ÉÒÔ¶¨Òå const ³£Á¿
£¨2£©const ¿ÉÒÔÐÞÊκ¯ÊýµÄ²ÎÊý¡¢·µ»ØÖµ£¬ÉõÖÁº¯ÊýµÄ¶¨ÒåÌå¡£±» const ÐÞÊεĶ«Î÷¶¼Êܵ½Ç¿ÖƱ£»¤£¬¿ÉÒÔÔ¤·ÀÒâÍâµÄ±ä¶¯£¬ÄÜÌá¸ß³ÌÐòµÄ½¡×³ÐÔ¡£
4¡¢ÔÚC++ ³ÌÐòÖе÷Óñ» C±àÒëÆ÷±àÒëºóµÄº¯Êý£¬ÎªÊ²Ã´Òª¼Ó extern ¡°C¡±ÉùÃ÷£¿
´ð£ºC++ÓïÑÔÖ§³Öº¯ÊýÖØÔØ£¬C ÓïÑÔ²»Ö§³Öº¯ÊýÖØÔØ¡£º¯Êý±» C++±àÒëºóÔÚ¿âÖеÄÃû×Ö
Óë C ÓïÑԵIJ»Í¬¡£¼ÙÉèij¸öº¯ÊýµÄÔÐÍΪ£º void foo(int x, int y); ¸Ãº¯Êý±» C ±àÒëÆ÷±àÒëºóÔÚ¿âÖеÄÃû×ÖΪ_foo£¬¶ø C++±àÒëÆ÷Ôò»á²úÉúÏñ _foo_int_int Ö®ÀàµÄÃû×Ö¡£
C++ÌṩÁË C Á¬½Ó½»»»Ö¸¶¨·ûºÅ extern¡°C¡±À´½â¾öÃû×ÖÆ¥ÅäÎÊÌâ¡£
5¡¢Çë¼òÊöÒÔÏÂÁ½¸öforÑ»·µÄÓÅȱµã // µÚÒ»¸ö // µÚ¶þ¸ö for (i=0; i void GetMemory(char *p) char *GetMemory(void) { { p = (char *)malloc(100); char p[] = \} return p; void Test(void) } { void Test(void) char *str = NULL; { GetMemory(str); char *str = NULL; strcpy(str, \str = GetMemory(); printf(str); printf(str); } } ÇëÎÊÔËÐÐTestº¯Êý»áÓÐʲôÑùµÄ½áÇëÎÊÔËÐÐTestº¯Êý»áÓÐʲôÑùµÄ½á¹û£¿ ¹û£¿ ´ð£º³ÌÐò±ÀÀ£¡£ ´ð£º¿ÉÄÜÊÇÂÒÂë¡£ ÒòΪ GetMemory ²¢²»ÄÜ´«µÝ¶¯Ì¬ÄÚÒòΪ GetMemory ·µ»ØµÄÊÇÖ¸Ïò¡°Õ»Äڴ棬 ´æ¡± Test º¯ÊýÖÐµÄ str Ò»Ö±¶¼ÊÇ NULL¡£ µÄÖ¸Õ룬¸ÃÖ¸ÕëµÄµØÖ·²»ÊÇ NULL£¬µ«strcpy(str, \½«Ê¹³ÌÆäÔÏÖµÄÄÚÈÝÒѾ±»Çå³ý£¬ÐÂÄÚÈݲ»¿ÉÐò±À Öª¡£ À£¡£ Void GetMemory2(char **p, int num) void Test(void) { { *p = (char *)malloc(num); char *str = (char *) } malloc(100); void Test(void) strcpy(str, ¡°hello¡±); { free(str); char *str = NULL; if(str != NULL) GetMemory(&str, 100); { strcpy(str, \ strcpy(str, ¡°world¡±); printf(str); printf(str); } } ÇëÎÊÔËÐÐTestº¯Êý»áÓÐʲôÑùµÄ½á} ¹û£¿ ÇëÎÊÔËÐÐTestº¯Êý»áÓÐʲôÑùµÄ½á´ð£º£¨1£©Äܹ»Êä³ö hello ¹û£¿ £¨2£©ÄÚ´æÐ¹Â© ´ð£º´Û¸Ä¶¯Ì¬ÄÚ´æÇøµÄÄÚÈÝ£¬ºó¹ûÄÑÒÔÔ¤ ÁÏ£¬·Ç³£Î£ÏÕ¡£ ÒòΪ free(str);Ö®ºó£¬str ³ÉΪҰָÕ룬 if(str != NULL)Óï¾ä²»Æð×÷ÓᣠÎå¡¢±àдstrcpyº¯Êý ÒÑÖªstrcpyº¯ÊýµÄÔÐÍÊÇ char *strcpy(char *strDest, const char *strSrc); ÆäÖÐstrDestÊÇÄ¿µÄ×Ö·û´®£¬strSrcÊÇÔ´×Ö·û´®¡£ £¨1£©²»µ÷ÓÃC++/CµÄ×Ö·û´®¿âº¯Êý£¬Çë±àдº¯Êý strcpy char *strcpy(char *strDest, const char *strSrc); { assert((strDest!=NULL) && (strSrc !=NULL)); // 2·Ö char *address = strDest; // 2·Ö while( (*strDest++ = * strSrc++) != ¡®\\0¡¯ ) // 2·Ö NULL ; return address ; // 2·Ö } £¨2£©strcpyÄܰÑstrSrcµÄÄÚÈݸ´ÖƵ½strDest£¬ÎªÊ²Ã´»¹Òªchar * ÀàÐ͵ķµ»ØÖµ£¿ ´ð£ºÎªÁËʵÏÖÁ´Ê½±í´ïʽ¡£ // 2 ·Ö ÀýÈç int length = strlen( strcpy( strDest, ¡°hello world¡±) ); Áù£º±à³ÌÌâ 1¡¢Ð´³ö³ÌÐò°ÑÒ»¸öÁ´±íÖеĽӵã˳Ðòµ¹ÅÅ listNode* reverse_list( listNode* head) //ÄæÐò { ListNode* new_head=head; if(head==NULL || head->next==NULL) return head; new_head = reverse_list(head->next); head->next->next=head; head->next=NULL; //·ÀÖ¹Á´±í³ÉΪһ¸ö»·£¬ÕâÊÇ×î¹Ø¼üµÄ¡£ return new_head; } 2¡¢Ð´³ö³ÌÐòɾ³ýÁ´±íÖеÄËùÓнӵã void del_all(node *head) { node *p; while(head!=NULL) { p=head->next; free(head); head=p; } cout<<\Êͷſռä³É¹¦!\} 3¡¢Ê¹ÓÃðÅÝ¡¢Ñ¡Ôñ·¨¡¢¿ìËÙÅÅÐò·¨¶ÔÊý×é½øÐÐÅÅÐò 1£©¡°Ã°ÅÝ·¨¡± ðÅÝ·¨´ó¼Ò¶¼½ÏÊìϤ¡£ÆäÔÀíΪ´Óa[0]¿ªÊ¼£¬ÒÀ´Î½«ÆäºÍºóÃæµÄÔªËØ±È½Ï, Èôa[0]>a[i]£¬Ôò½»»»ËüÃÇ£¬Ò»Ö±±È½Ïµ½a[n]¡£ ͬÀí¶Ôa[1],a[2],...a[n-1]´¦Àí£¬¼´Íê³ÉÅÅÐò¡£ void bubble(int *a,int n) /*¶¨ÒåÁ½¸ö²ÎÊý£ºÊý×éÊ×µØÖ·ÓëÊý×é´óС*/ { int i,j,temp; for(i=0;i for(j=i+1;j temp=a[i]; a[i]=a[j]; a[j]=temp; } }/*×¢ÒâÑ»·µÄÉÏÏÂÏÞ*/ } } ðÅÝ·¨ÔÀí¼òµ¥£¬µ«ÆäȱµãÊǽ»»»´ÎÊý¶à£¬Ð§Âʵ͡£ ÏÂÃæ½éÉÜÒ»ÖÖÔ´×ÔðÅÝ·¨µ«¸üÓÐЧÂʵķ½·¨¡°Ñ¡Ôñ·¨¡±¡£ £¨2£©¡°Ñ¡Ôñ·¨¡± Ñ¡Ôñ·¨Ñ»·¹ý³ÌÓëðÅÝ·¨Ò»Ö£¬Ëü»¹¶¨ÒåÁ˼ǺÅk=i È»ºóÒÀ´Î°Ña[k]ͬºóÃæÔªËØ±È½Ï£¬Èôa[k]>a[j],Ôòʹk=j. ×îºó¿´¿´k=iÊÇ·ñ»¹³ÉÁ¢£¬²»³ÉÁ¢Ôò½»»»a[k],a[i] ÕâÑù¾Í±ÈðÅÝ·¨Ê¡ÏÂÐí¶àÎÞÓõĽ»»»£¬Ìá¸ßÁËЧÂÊ¡£ void choise(int *a,int n) { int i,j,min,temp; for(i=0;i min=i; /*¸ø¼ÇºÅ¸³Öµ*/ for(j=i+1;j if(a[min]>a[j]) min=j; /*ÊÇmin×ÜÊÇÖ¸Ïò×îÐ¡ÔªËØ*/ } if(i!=min) { /*µ±min!=iÊDzŽ»»»£¬·ñÔòa[i]¼´Îª ×îС*/ temp=a[i]; a[i]=a[min]; a[min]=temp; } } } Ñ¡Ôñ·¨±ÈðÅÝ·¨Ð§Âʸü¸ß£¬µ«Ëµµ½¸ßЧÂÊ£¬·Ç¡°¿ìËÙ·¨¡±ÄªÊô£¬ÏÖÔÚ¾ÍÈÃÎÒÃÇÀ´Á˽âËü¡£ £¨3£©¡°¿ìËÙ·¨¡± ¿ìËÙ·¨¶¨ÒåÁËÈý¸ö²ÎÊý,£¨Êý×éÊ×µØÖ·*a,ÒªÅÅÐòÊý×éÆðÊ¼ÔªËØÏ±êi,ÒªÅÅÐòÊý×é½áÊøÔªËØÏ±êj). ËüÊ×ÏÈѡһ¸öÊý×éÔªËØ£¨Ò»°ãΪa[ (i+j)/2 ],¼´ÖмäÔªËØ£©×÷Ϊ²ÎÕÕ,°Ñ±ÈËüСµÄÔªËØ·Åµ½ËüµÄ×ó±ß£¬±ÈËü´óµÄ·ÅÔÚÓұߡ£ È»ºóÔËÓõݹ飬ÔÚ½«Ëü×ó£¬ÓÒÁ½¸ö×ÓÊý×éÅÅÐò£¬×îºóÍê³ÉÕû¸öÊý×éµÄÅÅÐò¡£ ÏÂÃæ·ÖÎöÆä´úÂ룺 void quick(int *a,int i,int j) { int m,n,temp; int k; m=i; n=j; k=a[(i+j)/2]; /*ѡȡµÄ²ÎÕÕ*/ do { while( a[m] m++; /* ´Ó×óµ½ÓÒÕÒ±Èk´óµÄÔªËØ*/ while( a[n] >k && n>i ) n--; /* ´ÓÓÒµ½×óÕÒ±ÈkСµÄÔªËØ*/ if(m<=n) { /*ÈôÕÒµ½ÇÒÂú×ãÌõ¼þ£¬Ôò½»»»*/ temp=a[m]; a[m]=a[n]; a[n]=temp; m++; n--; } } while(m<=n); if(m quick(a,m,j); /*ÔËÓõݹé*/ if(n>i) quick(a,i,n); } £¨4£©¡°²åÈë·¨¡± ²åÈë·¨ÊÇÒ»ÖֱȽÏÖ±¹ÛµÄÅÅÐò·½·¨¡£ ËüÊ×ÏȰÑÊý×éÍ·Á½¸öÔªËØÅźÃÐò£¬ÔÙÒÀ´Î°ÑºóÃæµÄÔªËØ²åÈëÊʵ±µÄλÖᣠ°ÑÊý×éÔªËØ²åÍêÒ²¾ÍÍê³ÉÁËÅÅÐò¡£ void insert(int *a,int n) { int i,j,temp; for(i=1;i temp=a[i]; /*tempΪҪ²åÈëµÄÔªËØ*/ j=i-1; while( j>=0&&temp { /*´Óa[i-1]¿ªÊ¼ÕÒ±Èa[i]СµÄÊý£¬Í¬Ê±°ÑÊý×éÔªËØÏòºóÒÆ*/ a[j+1]=a[j]; j--; } a[j+1]=temp; /*²åÈë*/ } } £¨5£©¡°shell·¨¡± shell·¨ÊÇÒ»¸ö½Ð shell µÄÃÀ¹úÈËÓë1969Äê·¢Ã÷µÄ¡£ ËüÊ×ÏȰÑÏà¾àk(k>=1)µÄÄǼ¸¸öÔªËØÅźÃÐò£¬ÔÙËõСkÖµ£¨Ò»°ãÈ¡ÆäÒ»°ë£©£¬ÔÙÅÅÐò£¬Ö±µ½k=1ʱÍê³ÉÅÅÐò¡£ ÏÂÃæÈÃÎÒÃÇÀ´·ÖÎöÆä´úÂ룺 void shell(int *a,int n) { int i,j,k,x; k=n/2; /*¼ä¾àÖµ*/ while(k>=1) { for(i=k;i x=a[i]; j=i-k; while(j>=0&&x a[j+k]=a[j]; j-=k; } a[j+k]=x; } k/=2; /*ËõС¼ä¾àÖµ*/ } } #include /*ΪÁË´òÓ¡·½±ã£¬ÎÒÃÇдһ¸öprint°É¡£*/ void print(int *a,int n) { int i; for(i=0;i main() { /*ΪÁ˹«Æ½£¬ÎÒÃǸøÃ¿¸öº¯Êý¶¨ÒåÒ»¸öÏàͬÊý×é*/ int a1[]={13,0,5,8,1,7,21,50,9,2}; int a2[]={13,0,5,8,1,7,21,50,9,2}; int a3[]={13,0,5,8,1,7,21,50,9,2}; int a4[]={13,0,5,8,1,7,21,50,9,2}; int a5[]={13,0,5,8,1,7,21,50,9,2}; printf(\ print(a1,10); printf(\ bubble(a1,10); print(a1,10); printf(\ choise(a2,10); print(a2,10); printf(\ quick(a3,0,9); print(a3,10); printf(\ insert(a4,10); print(a4,10); printf(\ shell(a5,10); print(a5,10); } µÚ¶þ²¿·Ö£ºC++ÓëQT 1. C++¶ÔCÓïÑÔ×öÁ˺ܶà¸Ä½ø£¬ÏÂÁÐÃèÊöÖÐ £¨D£© ʹµÃCÓïÑÔ·¢ÉúÁËÖʱ䣬¼´´ÓÃæÏò¹ý³Ì±ä³ÉÃæÏò¶ÔÏó¡£ A)Ôö¼ÓÁËһЩеÄÔËËã·û B)ÔÊÐíº¯ÊýÖØÔØ£¬²¢ÔÊÐíÉèÖÃĬÈϲÎÊý C)¹æ¶¨º¯Êý˵Ã÷±ØÐëÓÃÔÐÍ D)Òý½øÀàºÍ¶ÔÏóµÄ¸ÅÄî 2. ÏÂÃæËµ·¨ÖÐÕýÈ·µÄÊÇ£¨B £© A£© Ò»¸öÀàÖ»Äܶ¨ÒåÒ»¸ö¹¹Ô캯Êý£¬µ«¿ÉÒÔ¶¨Òå¶à¸çÎö¹¹º¯Êý(Ö»ÄÜÒ»¸ö) B£© Ò»¸öÀàÖ»Äܶ¨ÒåÒ»¸öÎö¹¹º¯Êý£¬µ«¿ÉÒÔ¶¨Òå¶à¸ö¹¹Ô캯Êý C£© ¹¹Ô캯ÊýÓëÎö¹¹º¯ÊýͬÃû£¬Ö»ÊÇÃû×Öǰ¼ÓÁËÒ»¸öÇó·´·ûºÅ£¨~£© D£©¹¹Ô캯Êý(²»)¿ÉÒÔÖ¸¶¨·µ»ØÀàÐÍ£¬¶øÎö¹¹º¯Êý²»ÄÜÖ¸¶¨Èκηµ»ØÀàÐÍ£¬¼´Ê¹ÊÇvoidÀàÐÍÒ²²»¿ÉÒÔ 3. ÏÂÃæ¹ØÓÚÓÑÔªµÄÃèÊöÖУ¬´íÎóµÄÊÇ£¨ D£©¡£ A) ÓÑÔªº¯Êý¿ÉÒÔ·ÃÎʸÃÀàµÄ˽ÓÐÊý¾Ý³ÉÔ±¡£ B) Ò»¸öÀàµÄÓÑÔªÀàÖеijÉÔ±º¯Êý¶¼ÊÇÕâ¸öÀàµÄÓÑÔªº¯Êý¡£ C) ÓÑÔª¿ÉÒÔÌá¸ß³ÌÐòµÄÔËÐÐЧÂÊ¡£ D) ÀàÓëÀàÖ®¼äµÄÓÑÔª¹ØÏµ¿ÉÒԼ̳С£ 4. ÓйØÎö¹¹º¯ÊýµÄ˵·¨²»ÕýÈ·µÄÊÇ£¨B£©¡£ A) Îö¹¹º¯ÊýÓÐÇнöÓÐÒ»¸ö B) Îö¹¹º¯ÊýºÍ¹¹Ô캯ÊýÒ»Ñù(²»)¿ÉÒÔÓÐÐβΠC) Îö¹¹º¯ÊýµÄ¹¦ÄÜÊÇÓÃÀ´ÊÍ·ÅÒ»¸ö¶ÔÏó D) Îö¹¹º¯ÊýÎÞÈκκ¯ÊýÀàÐÍ 5. ÏÂÁжÔÖØÔØº¯ÊýµÄÃèÊöÖУ¬£¨A£©ÊÇ´íÎóµÄ¡£ A) ÖØÔØº¯ÊýÖв»ÔÊÐíʹÓÃĬÈϲÎÊý B) ÖØÔØº¯ÊýÖбàÒëʱ¸ù¾Ý²ÎÊý±í½øÐÐÑ¡Ôñ C) ²»ÒªÊ¹ÓÃÖØÔØº¯ÊýÀ´ÃèÊöºÁÎÞÏà¸ÉµÄº¯Êý D) ¹¹Ô캯ÊýÖØÔØ½«»á¸ø³õʼ»¯´øÀ´¶àÖÖ·½Ê½ 6. ÏÂÃæÐðÊö´íÎóµÄÊÇ£¨ C £© A. ÅÉÉúÀà¿ÉÒÔʹÓÃprivateÅÉÉú B. ¶Ô»ùÀà³ÉÔ±µÄ·ÃÎʱØÐëÊÇÎÞ¶þÒåÐ﵀ C. »ùÀà³ÉÔ±µÄ·ÃÎÊÄÜÁ¦ÔÚÅÉÉúÀàÖÐά³Ö²»±ä D. ¸³Öµ¼æÈݹæÔòÒ²ÊÊÓÃÓÚ¶à¼Ì³ÐµÄ×éºÏ Ò»¡¢Ñ¡ÔñÌ⣺£¨¹²10СÌ⣬ÿÌâ3·Ö£© 1.ÀàµÄ¹¹Ô캯Êý±»×Ô¶¯µ÷ÓÃÖ´ÐеÄÇé¿öÊÇÔÚ¶¨Òå¸ÃÀàµÄ( C ) A)³ÉÔ±º¯Êýʱ B)Êý¾Ý³ÉԱʱ C)¶ÔÏóʱ D)ÓÑÔªº¯Êýʱ 2.˵Ã÷ÓÑÔªº¯ÊýʹÓùؼü×Ö( A ) A)friend B)static C)const D)colatile 3.ÒÑÖªÀàXÖеÄÒ»¸ö³ÉÔ±º¯Êý˵Ã÷ÈçÏÂ: Void Set(x &a); ÆäÖÐ,X&aµÄº¬ÒåÊÇ£¨C £© A)Ö¸ÏòÀàXµÄÖ¸ÕëΪa B)½«aµÄµØÖ·¸³¸ø±äÁ¿Sst C)aÊÇÀàXµÄ¶ÔÏóÒýÓã¬ÓÃÀ´×öΪSet()µÄÐβΠD)±äÁ¿XÊÇa°´Î»ÏàÓë×÷Ϊº¯ÊýSet()µÄ²ÎÊý 4.¹ØÓÚnewÔËËã·ûµÄÏÂÁÐÃèÊöÖÐ( D )ÊÇ´íÎóµÄ. //´´½¨Êý×éʱ£¬¶¨Òå¹¹Ô캯Êý±ØÐëûÓвÎÊý£¬»òÈ«²¿ÎªÄ¬ÈϲÎÊý A) Ëü¿ÉÒÔÓÃÀ´¶¯Ì¬´´½¨¶ÔÏóºÍ¶ÔÏóÊý×é B) ʹÓÃËü´´½¨¶ÔÏó»ò¶ÔÏóÊý×é,¿ÉÒÔʹÓÃÔËËã·ûDELETEɾ³ý C) ʹÓÃËü´´½¨¶ÔÏóʱҪµ÷Óù¹Ô캯Êý D) ʹÓÃËüµ÷ÓöÔÏóÊý×éʱ²»ÐíÖ¸¶¨³õʼֵ 5.ÔÊÐí·ÃÎÊÀàµÄËùÓжÔÏóµÄ˽ÓгÉÔ±,¹«ÓгÉÔ±ºÍ±£»¤³ÉÔ±µÄÊÇ( A ) A)ÓÑÔªº¯Êý B)³ÉÔ±º¯Êý C)ÄÚÁªº¯Êý D)ÖØÔØº¯Êý 6£®¾Ö²¿±äÁ¿¿ÉÒÔÒþ²ØÈ«¾Ö±äÁ¿£¬ÄÇôÔÚÓÐͬÃûÈ«¾Ö±äÁ¿ºÍ¾Ö²¿±äÁ¿µÄÇéÐÎʱ£¬¿ÉÒÔÓ㨠A £© Ìṩ¶ÔÈ«¾Ö±äÁ¿µÄ·ÃÎÊ A£© ÓòÔËËã·û B£© ÀàÔËËã·û C£© ÖØÔØ D£© ÒýÓà 7£®È±Ê¡Îö¹¹º¯ÊýµÄº¯ÊýÌåÊÇ£¨ C £© £Á£©²»´æÔÚ £Â£©Ëæ»ú²úÉúµÄ £Ã£©¿ÕµÄ £Ä£©ÎÞ·¨È·¶¨µÄ¡¢ 8.ͨ³£¿½±´¹¹Ô캯ÊýµÄ²ÎÊý±íÊÇ£¨ C £© //ÔÚVC6.0Ï A)¸ÃÀà¶ÔÏóÃû //±àÒë²»»áͨ¹ý B)¸ÃÀà¶ÔÏóµÄ³ÉÔ±Ãû //±àÒë¿ÉÒÔͨ¹ý£¬µ«²»ÊÇͨ³£µÄ±ê×¼·½·¨ C)¸ÃÀà¶ÔÏóµÄÒýÓÃÃû //±ê×¼¿½±´¹¹Ô캯ÊýµÄ·½·¨ D)¸ÃÀà¶ÔÏóµÄÖ¸ÕëÃû //±àÒë¿ÉÒÔͨ¹ý£¬µ«²»ÊÇͨ³£µÄ±ê×¼·½·¨ 9.¶Ô¶¨ÒåÖØÔØº¯ÊýµÄÏÂÁÐÒªÇóÖУ¬£¨D £© ÊÇ´íÎóµÄ A)ÒªÇó²ÎÊýµÄ¸öÊý²»Í¬ B)ÒªÇó²ÎÊýÖÐÖÁÉÙÓÐÒ»¸öÀàÐͲ»Í¬ C)ÒªÇó²ÎÊý¸öÊýÏàͬʱ£¬²ÎÊýÀàÐͲ»Í¬ D)ÒªÇóº¯ÊýµÄ·µ»ØÖµ²»Í¬ 10.¶ÔÓÚ¶àÖØ¼Ì³Ð£¬ÓУ¨D £© A.Ò»¸öÅÉÉúÀàÖ»ÄÜÓÐÒ»¸ö»ùÀà B.Ò»¸ö»ùÀàÖ»ÄܲúÉúÒ»¸öÅÉÉúÀà C.Ò»¸ö»ùÀà±ØÐë²úÉú¶à¸öÅÉÉúÀà D.Ò»¸öÅÉÉúÀà¿ÉÓжà¸ö»ùÀà 7. CºÍC++ÓÐʲô²»Í¬?£¨4·Ö£© 1£®´ÓÔ´ÎļþÎļþµÄÀ©Õ¹ÃûÉÏÓв»Í¬ 2£®°üº¬µÄÍ·Îļþ²»Í¬ 3£®ÊäÈëÊä³ö²»Í¬ 4£®CÓïÑÔÊÇÈõÀàÐͼì²é»úÖÆ 5£®C++Ö§³ÖÃæÏò¶ÔÏóµÄÖ§³Ö 6£®C++¾ßÓÐÁé»îµÄ¾Ö²¿±äÁ¿ËµÃ÷ 7£®C++µÄ½á¹¹£¬ÁªºÏ£¬Ã¶¾ÙÃû¿ÉÖ±½Ó×÷ΪÀàÐÍÃû¡¢ 8£®??µÈ£¨ÏêÇé²Î¿¼C++¿Î¡°02_c++ÓïÑÔ»ù´¡ÖªÊ¶2¡±£© 8. ÃæÏò¶ÔÏóµÄÈý¸ö»ù±¾ÌØÕ÷¼°¸÷×ÔµÄ×÷Óã¨6·Ö£© 1.·â×°£º½«¿Í¹ÛÊÂÎï³éÏó³ÉÀ࣬ÿ¸öÀà¶Ô×ÔÉíµÄÊý¾ÝºÍ·½·¨ÊµÐÐprotection(private,protected,public) 2.¼Ì³Ð£º¹ãÒåµÄ¼Ì³ÐÓÐÈýÖÖʵÏÖÐÎʽ£ºÊµÏּ̳У¨Ö¸Ê¹ÓûùÀàµÄÊôÐԺͷ½·¨¶øÎÞÐè¶îÍâ±àÂëµÄÄÜÁ¦¡¢¿ÉÊӼ̳У¨×Ó´°ÌåʹÓø¸´°ÌåµÄÍâ¹ÛºÍʵÏÖ´úÂ룩¡¢½Ó¿Ú¼Ì³Ð£¨½öʹÓÃÊôÐԺͷ½·¨£¬ÊµÏÖÖͺóµ½×ÓÀàʵÏÖ£©¡£Ç°Á½ÖÖ£¨Àà¼Ì³Ð£©ºÍºóÒ»ÖÖ£¨¶ÔÏó×éºÏ=>½Ó¿Ú¼Ì³ÐÒÔ¼°´¿Ð麯Êý£©¹¹³ÉÁ˹¦Äܸ´ÓõÄÁ½ÖÖ·½Ê½¡£ 3.¶à̬£ºÖ¸º¯ÊýÖØÔØºÍÖØÐ´£¬ÖØÐ´µÄÖ÷ÒªµÄ¹¦ÄÜÊǽ«¸¸¶ÔÏóÉèÖóÉΪºÍÒ»¸ö»ò¸ü¶àµÄËûµÄ×Ó¶ÔÏóÏàµÈµÄ¼¼Êõ,¸³ÖµÖ®ºó£¬¸¸¶ÔÏó¾Í¿ÉÒÔ¸ù¾Ýµ±Ç°¸³Öµ¸øËüµÄ×Ó¶ÔÏóµÄÌØÐÔÒÔ²»Í¬µÄ·½Ê½ÔË×÷¡£¼òµ¥µÄ˵£ºÔÊÐí½«×ÓÀàÀàÐ͵ÄÖ¸Õ븳ֵ¸ø¸¸ÀàÀàÐ͵ÄÖ¸Õë¡£ 9. cºÍc++ÖеÄstructÓÐʲô²»Í¬£¿£¨5·Ö£© 1£® CÓïÑÔÖеĽṹÌåÖеÄÔªËØÖ»ÄÜÊÇÊý¾Ý£¬Ã»Óк¯Êý¡££¨º¯ÊýÖ¸Õë²»Ë㣬Æä±¾ÖÊÊÇÖ¸Õ룩£» 2£®C++ÓïÑԵĽṹÌåµÄÔªËØ²»½ö¿ÉÒÔÓÐÊý¾Ý£¬»¹¿ÉÒÔÓк¯Êý£» 3£®CÓïÑÔºÍC++ÓïÑԵĽṹÌåÖеijÉÔ±µÄ·ÃÎÊȨÏÞ²»Ò»Ñù£¬C++½á¹¹Ìå¿ÉÒÔÉèÖÃÆäÖеijÉÔ±µÄ·ÃÎÊȨÏÞ£» 10. const·ûºÅµÄ×÷ÓÃÓÐÄÄЩ£¿£¨5·Ö£© Const ÐÞÊÎÖ¸¶¨µÄ±äÁ¿ÎªÖ»¶ÁÀàÐÍ£¬×¢Ò⣺²»ÄÜ˵constÐÞÊλò¶¨Òå³£Á¿³£ÓÃÇé¿ö (1)const char*p (2)char const*p (3)char*const p (4) void A::fun() const { //??} Èç¹ûconstλÓÚÐǺŵÄ×ó²à£¬ÔòconstÊÇÓÃÀ´ÐÞÊÎÖ¸ÕëËùÖ¸ÏòµÄ±äÁ¿£¬¼´Ö¸ÕëÖ¸ÏòΪ³£Á¿ Èç¹ûconstλÓÚÐǺŵÄÓҲ࣬const¾ÍÊÇÐÞÊÎÖ¸Õë±¾Éí£¬¼´Ö¸Õë±¾ÉíÊdz£Á¿¡£ Èç¹ûconstλÓÚº¯ÊýºóÃæ£¬Ôò±íʾÀàAµÄ³ÉÔ±º¯Êýfun²»¿ÉÒÔÐÞ¸ÄÊý¾Ý³ÉÔ±£» 11. ÒýÓÃÓëÖ¸ÕëÓÐÊ²Ã´Çø±ð£¿£¨6·Ö£© 1 ÒýÓñØÐë±»³õʼ»¯£¬Ö¸Õë²»±Ø¡£ 2 ÒýÓóõʼ»¯ÒÔºó²»Äܱ»¸Ä±ä£¬Ö¸Õë¿ÉÒԸıäËùÖ¸µÄ¶ÔÏó¡£ 3 ²»´æÔÚÖ¸Ïò¿ÕÖµµÄÒýÓ㬵«ÊÇ´æÔÚÖ¸Ïò¿ÕÖµµÄÖ¸Õë¡£ 4 ÖØÔØ²Ù×÷·ûʹÓÃÒýÓÿÉÒÔÍê³É´®ÊÔ²Ù×÷ ±¾ÖÊ£ºÒýÓÃÊÇÒ»¸öÒÑ´æÔÚ±äÁ¿µÄ±ðÃû£¬Æäʵ¾ÍÊÇÕâ¸ö±äÁ¿±¾Éí£»¶øÖ¸ÕëÊÇÒ»¸ö±äÁ¿£¬ÆäÖµÊÇÁíÒ»¸ö±äÁ¿µÄµØÖ·¡£ 12. ÖØÔØ£¨overload)ºÍÖØÐ´(overried£¬ÓеÄÊéÒ²½Ð×ö¡°¸²¸Ç¡±£©µÄÇø±ð£¿£¨4 ·Ö£© ³£¿¼µÄÌâÄ¿¡£´Ó¶¨ÒåÉÏÀ´Ëµ£ºÖØÔغÍÖØÐ´¶¼ÊDz»Í¬º¯ÊýʹÓÃͬһº¯ÊýÃûµÄÏÖÏó ÖØÔØµÄÌØÕ÷£º 1£®¾ßÓÐÏàͬµÄ×÷ÓÃÓò£¨ÔÚͬһ¸öÀàÖж¨Òå»ò¶¼ÊÇÈ«¾Öº¯Êý£© 2£®º¯ÊýÃû×ÖÏàͬ£¬µ«ÊDzÎÊýµÄÀàÐÍ»ò¸öÊý²»Í¬ 3£®virtual¹Ø¼ü×Ö¿ÉÓпÉÎÞ ÖØÐ´µÄÌØÕ÷ 1. ²»Í¬µÄ×÷ÓÃÓò£¨·Ö±ð´æÔÚ»ùÀàºÍÅÉÉúÀàÖУ© 2. º¯ÊýÃû³ÆºÍ²ÎÊýÍêÈ«Ïàͬ 3. Ò»°ãÐèÒª½«»ùÀຯÊýÉèÖÃΪvirtualÀàÐÍ 13. static ÔÚÀàÄÚÐÞÊγÉÔ±µÄ×÷ÓÃÊÇʲô£¬ÈçºÎÒýÓÃÕâЩ³ÉÔ±£¿£¨4·Ö£© Static ÐÞÊεijÉÔ±³ÆÎª¾²Ì¬³ÉÔ±£¬·ÖΪ¾²Ì¬Êý¾Ý³ÉÔ±ºÍ¾²Ì¬³ÉÔ±º¯Êý ¾²Ì¬Êý¾Ý³ÉÔ±£ºÎÞÂÛ´´½¨¶àÉÙ¸ö¶ÔÏó£¬Õâ¸ö¼¸¸ö¾²Ì¬Êý¾Ý³ÉÔ±³ÉÔ±ÔÚÄÚ´æÖÐÖ» ÖµÕ¼Ò»¸öÕâ¸öÊý¾ÝÀàÐ͵Ŀռ䡣 ¾²Ì¬³ÉÔ±º¯Êý£ºÊ×ÏÈ£¬¾²Ì¬³ÉÔ±º¯ÊýÊôÓÚÕâ¸öÀ࣬µ«Ëü²»ÊǾßÌåµÄij¸öÌØ¶¨¶ÔÏóµÄ³ÉÔ±º¯Êý¡£¾²Ì¬³ÉÔ±º¯ÊýÒ»°ãÖ»ÄÜ·ÃÎÊÕâ¸öÀàµÄ¾²Ì¬Êý¾Ý³ÉÔ±¡£ ÒýÓ÷½·¨£ºÀàÃû::¾²Ì¬³ÉÔ±£» ¶ÔÏó.¾²Ì¬³ÉÔ±£» 14. ÐéÎö¹¹º¯ÊýµÄ×÷ÓÃÊÇʲô£¿£¨6·Ö£© Èç¹ûÒ»¸ö»ùÀàµÄÖ¸ÕëÖ¸ÏòÅÉÉúÀà¶ÔÏ󣬵±ÓÃdeleteÔËËã·ûÊÍ·ÅÕâ¸öÖ¸Õëʱ£¬Äܱ£Ö¤²»½öµ÷ÓûùÀàµÄÎö¹¹º¯Êý£¬»¹Äܵ÷ÓÃÅÉÉúÀàµÄÎö¹¹º¯Êý£¬´ïµ½±ÜÃâÄÚ´æÐ¹Â¶µÄ×÷Óà 15. Àà³ÉÔ±º¯ÊýµÄÖØÔØ¡¢¸²¸ÇºÍÒþ²ØÇø±ð£¿ a.³ÉÔ±º¯Êý±»ÖØÔصÄÌØÕ÷£º £¨1£©ÏàͬµÄ·¶Î§£¨ÔÚͬһ¸öÀàÖУ©£» £¨2£©º¯ÊýÃû×ÖÏàͬ£» £¨3£©²ÎÊý²»Í¬£» £¨4£©virtual ¹Ø¼ü×Ö¿ÉÓпÉÎÞ¡£ b.¸²¸ÇÊÇÖ¸ÅÉÉúÀຯÊý¸²¸Ç»ùÀຯÊý£¬ÌØÕ÷ÊÇ£º £¨1£©²»Í¬µÄ·¶Î§£¨·Ö±ðλÓÚÅÉÉúÀàÓë»ùÀࣩ£» £¨2£©º¯ÊýÃû×ÖÏàͬ£» £¨3£©²ÎÊýÏàͬ£» £¨4£©»ùÀຯÊý±ØÐëÓÐvirtual ¹Ø¼ü×Ö¡£ c.¡°Òþ²Ø¡±ÊÇÖ¸ÅÉÉúÀàµÄº¯ÊýÆÁ±ÎÁËÓëÆäͬÃûµÄ»ùÀຯÊý£¬¹æÔòÈçÏ£º £¨1£©Èç¹ûÅÉÉúÀàµÄº¯ÊýÓë»ùÀàµÄº¯ÊýͬÃû£¬µ«ÊDzÎÊý²»Í¬¡£´Ëʱ£¬²»ÂÛÓÐÎÞvirtual¹Ø¼ü×Ö£¬»ùÀàµÄº¯Êý½«±»Òþ²Ø£¨×¢Òâ±ðÓëÖØÔØ»ìÏý£©¡£ £¨2£©Èç¹ûÅÉÉúÀàµÄº¯ÊýÓë»ùÀàµÄº¯ÊýͬÃû£¬²¢ÇÒ²ÎÊýÒ²Ïàͬ£¬µ«ÊÇ»ùÀຯÊýûÓÐvirtual ¹Ø¼ü×Ö¡£´Ëʱ£¬»ùÀàµÄº¯Êý±»Òþ²Ø£¨×¢Òâ±ðÓ븲¸Ç»ìÏý£© Èý¡¢±à³ÌÌ⣺£¨¹²3СÌâ ÿСÌâ10·Ö£© 16. ±àдһ¸ö×Ö·û´®´¦ÀíµÄÀ࣬MyString£¬ÊµÏÖ¿½±´¹¹Ô죬¡®£½¡¯ºÅÖØÔØ µÈ»ù ±¾º¯Êý¡£ 17. ʹÓÃMyString×÷Ϊ³ÉÔ±¶ÔÏóʵÏÖÒ»¸öPersonÀ࣬°üº¬£ºÐÕÃû£¬ÄêÁä¡£ 18. ʵÏÖÒ»¸öStudent ÀࣺÓÐÐÔÃû£¬ÄêÁ䣬ѧºÅ£¬ÀÏʦÐÕÃû¡£ 19. ±àдÀàStringµÄ¹¹Ô캯Êý¡¢Îö¹¹º¯ÊýºÍ¸³Öµº¯Êý ÒÑÖªÀàStringµÄÔÐÍΪ£º class String { public: String(const char *str = NULL); // ÆÕͨ¹¹Ô캯Êý String(const String &other); // ¿½±´¹¹Ô캯Êý ~ String(void); // Îö¹¹º¯Êý String & operate =(const String &other); // ¸³Öµº¯Êý private: char *m_data; // ÓÃÓÚ±£´æ×Ö·û´® }; Çë±àдStringµÄÉÏÊö4¸öº¯Êý¡£ ±ê×¼´ð°¸£º // String µÄÎö¹¹º¯Êý String::~String(void) // 3 ·Ö { delete [] m_data; // ÓÉÓÚ m_data ÊÇÄÚ²¿Êý¾ÝÀàÐÍ£¬Ò²¿ÉÒÔд³É delete m_data; } // String µÄÆÕͨ¹¹Ô캯Êý String::String(const char *str) // 6 ·Ö { if(str==NULL) { m_data = new char[1]; *m_data = ¡®\\0¡¯; } else { int length = strlen(str); m_data = new char[length+1]; // ÈôÄÜ¼Ó NULL ÅжÏÔò¸üºÃ strcpy(m_data, str); } } // ¿½±´¹¹Ô캯Êý String::String(const String &other) // 3 ·Ö { int length = strlen(other.m_data); m_data = new char[length+1]; // ÈôÄÜ¼Ó NULL ÅжÏÔò¸üºÃ strcpy(m_data, other.m_data); } // ¸³Öµº¯Êý String & String::operate =(const String &other) // 13 ·Ö { // (1) ¼ì²é×Ô¸³Öµ // 4 ·Ö if(this == &other) return *this; // (2) ÊÍ·ÅÔÓеÄÄÚ´æ×ÊÔ´ // 3 ·Ö delete [] m_data; // £¨3£©·ÖÅäеÄÄÚ´æ×ÊÔ´£¬²¢¸´ÖÆÄÚÈÝ // 3 ·Ö int length = strlen(other.m_data); m_data = new char[length+1]; // ÈôÄÜ¼Ó NULL ÅжÏÔò¸üºÃ strcpy(m_data, other.m_data); // £¨4£©·µ»Ø±¾¶ÔÏóµÄÒýÓà // 3 ·Ö return *this; } QtͼÐοⲿ·Ö£º 1¡¢Ê²Ã´ÊÇQtͼÐο⣬ÄãÊÇÔõôÀí½âµÄ£¿ QtÊÇÒ»¸ö¿çƽ̨µÄC++ͼÏñ½çÃæÓ¦ÓóÌÐò¿ò¼Ü¡£ Óŵ㣺¿çƽ̨¡¢ÃæÏò¶ÔÏ󡢷ḻµÄAPI¡¢ÐźÅÓë²ÛµÄÏûÏ¢»úÖÆ¡¢Ç¿´óµÄ¿ª·¢¹¤¾ß¡¢XMLÖ§³Ö¡¢¶àÓïÑÔÖ§³Ö£¬Ö§³Ö¿ªÔ´ÐÒéµÈ 2¡¢Qt¿âµÄQApplicationÀàÓÐʲô×÷Óã¿ 3¡¢QtÔõô´¦Àí»æÍ¼Ê¼þºÍÊó±êʼþ£¿ 4¡¢¾ÙÀý˵Ã÷ÔõôʵÏÖ×Ô¶¨ÒåÐźźͲۡ£ ÐźÅÊÇÒ»¸öÌØ¶¨µÄ±êʾ£¬ÄÜͨ¹ýemit·¢Éä ²ÛÊǺ¯Êý£¬ËüºÍÆÙÆÕͨµÄC++µÄ³ÉÔ±º¯Êý¼¸ºõÒ»Ñù£¬Î¨Ò»²»Í¬µÄÊDzۿÉÒÔºÍÐźÅÁ¬½ÓÔÚÒ»Æð£¬µ±·¢ÉäÕâ¸öÐźź󣬲ۺ¯ÊýÄܱ»×Ô¶¯µ÷Óᣠ×÷ÓÃÊǶÔÏóÖ®¼äͨÐŵĸ߼¶½Ó¿Ú¡£ ʹÓ÷½Ê½£¬Í¨¹ýQObject::connect(??)º¯ÊýÀ´Á¬½Ó¡£Á¬½Ó·½Ê½ÓжàÖÖ£º1£¬Ò»¸öÐźÅÁ¬½ÓÒ»¸ö²Û£»2£¬Ò»¸öÐźÅÒ²¿ÉÒÔÁ¬½Ó¶à¸ö²Û£»4£¬¶à¸öÐźſÉÒÔÁ¬½ÓÒ»¸ö²Û£»4£¬Ò»¸öÐźſÉÒÔÓëÁíÍâÒ»¸öÐźÅÏàÁ¬½Ó¡£ 5¡¢ÒªÉè¼Æ¿ª·¢Ò»¸öɨÀ×ÓÎÏ·£¬Ð´³öÄãµÄÉè¼ÆË¼Â·¡£ 6¡¢Qt Öд°¿Ú¶ÔÏóµÄ¸¸×Ó¹ØÏµÈçºÎÖ¸¶¨£¿Ö¸¶¨¸¸¶ÔÏóÓÐʲô×÷Óü°ºÃ´¦£¿ £¨5·Ö£© Á½ÖÖ·½·¨£º1£¬Í¨¹ý¹¹Ô캯ÊýµÄ²ÎÊýÖ¸¶¨¡£2,µ÷ÓóÉÔ±º¯Êý void QWidget::setParent( QWidget * parent ); ºÃ´¦£º1£¬¸¸¶ÔÏóshow¶¼»áµÝ¹éµ÷ÓÃÆäËùÓÐ×Ó¶ÔÏó£¬ÈÃËûÃǶ¼ÏÔʾ³öÀ´£¬hideÒ²Ò»Ñù,2£¬¸¸¶ÔÏó±»Ïú»Ùʱ»áµÝ¹éÏú»ÙÆäËùÓеÄ×Ó¶ÔÏó£¬ÈÃÄÚ´æ¹ÜÀí¸ü¼Ó¼òµ¥¡£ ¶þ¡¢±à³ÌÌ⣺ 1.¼Ì³Ð×ÔQWidget ,×Ô¶¨ÒåÒ»¸öButton, ¹¦ÄÜÈçÏ£º 1£©enterÓëleaveÓв»Í¬µÄ±³¾°×´Ì¬±ä»¯ ,Ìáʾ£ºenterEvent(), leaveEvent(); 2£©Press ÓëRelease Ò²Óв»Í¬µÄ±³¾°×´Ì¬±ä»¯ 3£©µ±Êó±êµã»÷ʱ¿ÉÒÔ·¢³öclicked() ÐźŠ4£©´´½¨Ò»¸ö´°¿Ú£¬²âÊÔ×Ô¶¨ÒåµÄButton µÚÈý²¿·Ö£ºlinuxϵͳ±à³Ì Ò»£ºÑ¡ÔñÌâ £¨1£©ÏÂÁв»ÊÇLinuxϵͳ½ø³ÌÀàÐ͵ÄÊÇ ( B )¡£ A ½»»¥½ø³Ì B Åú´¦Àí½ø³Ì C ÊØ»¤½ø³Ì D ¾ÍÐ÷½ø³Ì£¨½ø³Ì״̬£© £¨2£©ÖÕÖ¹Ò»¸öǰ̨½ø³Ì¿ÉÄÜÓõ½µÄÃüÁîºÍ²Ù×÷( A) A£º kill B £º A ½ø³Ì¹ÜÀíϵͳ B ÄÚ´æ¹ÜÀíϵͳ C I/O¹ÜÀíϵͳ DÓ²¼þ¹ÜÀíϵͳ £¨4£©½ø³ÌÓÐÈýÖÖ״̬£º( C ) A ×¼±¸Ì¬¡¢Ö´ÐÐ̬ºÍÍ˳ö̬ B ¾«È·Ì¬¡¢Ä£ºý̬ºÍËæ»ú̬ C ÔËÐÐ̬¡¢¾ÍÐ÷̬ºÍµÈ´ý̬ D ÊÖ¹¤Ì¬¡¢×Ô¶¯Ì¬ºÍ×ÔÓÉ̬ £¨5£©( B )²»Êǽø³ÌºÍ³ÌÐòµÄÇø±ð¡£ A ³ÌÐòÊÇÒ»×éÓÐÐòµÄ¾²Ì¬Ö¸Á½ø³ÌÊÇÒ»´Î³ÌÐòµÄÖ´Ðйý³Ì B ³ÌÐòÖ»ÄÜÔÚǰ̨ÔËÐУ¬¶ø½ø³Ì¿ÉÒÔÔÚǰ̨»òºǫ́ÔËÐÐ C ³ÌÐò¿ÉÒÔ³¤ÆÚ±£´æ£¬½ø³ÌÊÇÔÝʱµÄ D ³ÌÐòûÓÐ״̬£¬¶ø½ø³ÌÊÇÓÐ״̬µÄ ¶þ£ºÌî¿ÕÌâ (1)ÁоٰËÖÖ³£¼ûµÄ½ø³Ì¼äͨÐÅ·½Ê½_¹ÜµÀ¡¢ÃüÃû¹ÜµÀ¡¢ÏûÏ¢¶ÓÁС¢Ðźš¢ÐźÅÁ¿¡¢ÄÚ´æÓ³Éä¡¢¹²ÏíÄÚ´æ¡¢Ì×½Ó×Ö____. (2)ÍøÂçÉÏÁ½Ì«Ö÷»úµÄ½ø³Ì¼äͨÐÅ·½Ê½Îª__Ì×½Ó×Ö______. (3)ÃüÃû¹ÜµÀ±ÈÎÞÃû¹ÜµÀµÄÓÅÊÆ__²»ÐèÒªÓи¸×Ó½ø³Ì¹ØÏµ____. (4)ÏûÏ¢¶ÓÁбÈÃüÃû¹ÜµÀºÍÎÞÃû¹ÜµÀµÄÓÅÊÆ__¸ü·½±ã¶à¸ö½ø³Ì¼äµÄͨѶ______. (5)°´ÕÕÂß¼½á¹¹²»Í¬½øÐÐÊý¾Ý¿â»®·Ö£¬Sqlite Êý¾Ý¿âÊôÓÚÄÄÒ»Àà¹ØÏµÐÍÊý¾Ý¿â_. (6)SQLÓïÑÔ°üÀ¨ËIJ¿·Ö_Êý¾Ý¶¨Òå___ÓïÑÔ¡¢_Êý¾Ý²Ù×÷____ÓïÑÔ¡¢_Êý¾Ý²éѯ____Óï ÑÔ¡¢__Êý¾Ý¿ØÖÆ___ÓïÑÔ£¬select ÊôÓÚ__Êý¾Ý²éѯ____ÓïÑÔ¡£ Èý£ºÎÊ´ðÌâ 1. Linux¸ùĿ¼ÏÂÒ»°ãÓÐÄÄЩĿ¼£¿Ã¿¸öĿ¼µÄ×÷ÓÃÊÇʲô£¿ a) 2. ÓÃgcc±àÒëÎļþtest.c£¬Òª¾¹ýÄö²½Ö裿 a) .c(cÔ´³ÌÐò) ----(Ô¤´¦Àí)?.i£¨Ô¤´¦ÀíºóµÄc³ÌÐò£© b) .i ----(±àÒë)?.s£¨»ã±àÎļþ£© c) .s£¨»ã±àÎļþ£©----(»ã±à)?.o £¨Ä¿±êÎļþ£© d) .o£¨Ä¿±êÎļþ£©----(Á¬½Ó)?elf £¨¿ÉÖ´ÐгÌÐò£© e) gcc -E hello.c -o hello.i f) gcc ¨CS hello.i -o hello.s g) gcc ¨Cc hello.s -o hello.o h) gcc hello.o -o hello_elf 3. gccµÄ²ÎÊý¡°-L¡±£¬¡°-l¡±¡°-I¡±·Ö±ðÊÇʲôÒâÒ壿¾ÙÀý˵Ã÷¡£ -I DIR Ö¸¶¨¶îÍâµÄÍ·ÎļþËÑË÷·¾¶DIR -L DIR Ö¸¶¨¶îÍâµÄ¿âº¯ÊýËÑË÷·¾¶DIR -l LIBRARY Ö¸¶¨Á´½ÓʱÐèÒªµÄÆäËüº¯Êý¿â¡°LIBRARY¡± 4. дһ¸ö½Å±¾Íê³ÉÈçϹ¦ÄÜ£º Ê×ÏÈ£¬ÈÃʹÓÃÕßÊäÈëÒ»¸öÎļþÃû£¬½Å±¾×÷ÈçÏÂÅжϣº (1)Õâ¸öÎļþÊÇ·ñ´æÔÚ£¬Èô²»´æÔÚÔò¸ø³öÒ»¸ö¡°Filename does noet exist¡±Ìáʾ£¬²¢ÖжϳÌÐò¡£ (2)ÈôÕâ¸öÎļþ´æÔÚ£¬ÔòÅжÏËüÊÇÎļþ»¹ÊÇĿ¼£¬½á¹ûÊä³ö¡°Filename is regular file¡±»ò¡°Filename is directory¡± (3)ÅжÏÓû§¶ÔÕâ¸öÎļþ»òĿ¼Ëù¾ßÓеÄȨÏÞ²¢ÏÔʾ³öÀ´¡£ 5. ʲôÊÇϵͳµ÷Óã¿Çëд³öÄã¶Ôϵͳµ÷ÓõÄÀí½â¡£ 6. ʲôÊDZê×¼I/O¿â£¿±ê×¼I/O¿âºÍϵͳµ÷ÓÃÓÐÊ²Ã´Çø±ð£¿ (1)¿âº¯ÊýÓÉÁ½ÀຯÊý×é³É 1.²»ÐèÒª²Ù×÷Ó²¼þµÄÖ±½ÓÓɺ¯ÊýÄÚ²¿Íê³É£¬²¢½«½á¹û·´À¡¸øÓ¦ÓóÌÐò£¬Èç:strcpyµÈ×Ö·û´®²Ù×÷º¯Êý 2.ÐèÒª²Ù×÷Ó²¼þµÄ£¬Ôòͨ¹ý·âװϵͳµ÷ÓÃʵÏÖÏàÓ¦µÄ¹¦ÄÜ£¬È磺printfµÈ (2)²¢²»ÊÇËùÓеÄϵͳµ÷Óö¼±»·â×°³ÉÁ˿⺯Êý£¬ÏµÍ³ÌṩµÄºÜ¶à¹¦Äܶ¼±Ø Ðëͨ¹ýϵͳ µ÷ÓòÅÄÜʵÏÖ (3)ϵͳµ÷ÓÃÊÇÐèҪʱ¼äµÄ,³ÌÐòÖÐÆµ·±µÄʹÓÃϵͳµ÷ÓûήµÍ³ÌÐòµÄÔËÐРЧÂÊ 1.µ±ÔËÐÐÄں˴úÂëʱ,CPU¹¤×÷ÔÚϵͳ̬, ÔÚϵͳµ÷Ó÷¢ÉúǰÐèÒª±£´æÓû§Ì¬µÄÕ»ºÍÄÚ´æ»·¾³,È»ºóתÈëϵͳ̬¹¤×÷ 2.ϵͳµ÷ÓýáÊøºó,ÓÖÒªÇл»»ØÓû§Ì¬.ÕâÖÖ»·¾³µÄÇл»»áÏûºÄµôÐí¶àʱ¼ä (4)¿âº¯Êý·ÃÎÊÎļþʱ¸ù¾ÝÐèÒªÉèÖò»Í¬ÀàÐ͵Ļº³åÇø£¬´Ó¶ø¼õÉÙÁËÖ±½Óµ÷ÓÃIOϵͳµ÷ÓõĴÎÊý£¬Ìá¸ßÁË·ÃÎÊЧÂÊ 7. ʲôÊǽø³Ì£¿ÓÃfork()´´½¨Ò»¸ö×Ó½ø³Ìʱ£¬ÏµÍ³»á×öʲô¹¤×÷£¿ ³ÌÐòÊÇһЩָÁîµÄÓÐÐò¼¯ºÏ£¬¶ø½ø³ÌÊdzÌÐòÖ´ÐеĹý³Ì , Æä°üÀ¨½ø³ÌµÄ´´ ½¨¡¢µ÷¶ÈºÍÏûÍö ¡£ fork() º¯ÊýÓÃÓÚ´ÓÒ»¸öÒÑ´æÔÚ µÄ ½ø³ÌÖд´½¨Ò»¸öнø³Ì , нø³Ì³Æ ×Ó½ø³Ì , Ô½ø³Ì³ÆÎª¸¸½ø³Ì . Ϊ 8. ¹ÜµÀºÍÃüÃû¹ÜµÀʹÓÃÉÏÓÐʲô²»Í¬Ö®´¦£¿ (1)¹ÜµÀÊÇ×î¹ÅÀ쵀 UNIX IPC ·½Ê½ 1.°ëË«¹¤£¬Êý¾ÝÔÚͬһʱ¿ÌÖ»ÄÜÔÚÒ»¸ö·½ÏòÉÏÁ÷¶¯ 2.¹ÜµÀûÓÐÃû×Ö£¬Ö»ÄÜÔÚ¹«¹²×æÏȵĽø³ÌÖÐʹÓà 3.ÌØÊâµÄÎļþ£¬²»´æÔÚÎļþϵͳ£¬²¢ÇÒÖ»´æÔÚÓÚÄÚ´æÖÐ 4.Ò»¶ËдÈ룬ÁíÒ»¶Ë¶Á³ö 5.»º³åÇøÊÇÓÐÏ޵ģ¨4K×Ö½Ú£© 6.Ëù´«Ë͵ÄÊý¾ÝÊÇÎÞ¸ñʽµÄ,дÈë»ò¶Á³öµÄʱºòÐèÔ¼¶¨Êý¾ÝµÄ¸ñʽ 7.´Ó¹ÜµÀ¶ÁÊý¾ÝÊÇÒ»´ÎÐÔ²Ù×÷£¬Êý¾ÝÒ»µ©±»¶Á£¬Ëü¾Í´Ó¹ÜµÀÖб»Åׯú£¬ Êͷſռä ÒÔ±ãд¸ü¶àµÄÊý¾Ý¡£ 8. #include int pipe(int filedes[2]) ; ¹¦ÄÜ£º¾ÓɲÎÊý filedes ·µ»ØÁ½¸öÎļþÃèÊö·û ²ÎÊý£º filedes[0] Ϊ¶Á¶ø´ò¿ª filedes[1] Ϊд¶ø´ò¿ª filedes[1] µÄÊä³öÊÇ filedes[0] µÄÊäÈë ·µ»ØÖµ£º ³É¹¦£º·µ»Ø 0 ʧ°Ü£º·µ»Ø -1 £¨2£©ÃüÃû¹ÜµÀ (FIFO) 1.FIFO Îļþ´æÔÚÓÚÎļþϵͳÖУ¬µ« FIFO ÖеÄÄÚÈÝÈ´´æ·ÅÔÚÄÚ´æÖÐ £¬ 2.¸Ã»º³åÇø´óСΪ 1 Ò³£¬¼´ 4K ×Ö½Ú¡£ 3.FIFO ÓÐÃû×Ö£¬²»Í¬µÄ½ø³Ì¿ÉÒÔͨ¹ý¸ÃÃüÃû¹ÜµÀ½øÐÐͨÐÅ¡£ 4.´«Ë͵ÄÊý¾ÝÊÇÎÞ¸ñʽµÄ ¡£ 5.¶ÁÊý¾ÝÊÇÒ»´ÎÐÔ²Ù×÷£¬Ò»µ©±»¶Á£¬¾Í´Ó FIFO Öб»Å× Æú£¬ÊͷſռäÒÔ ±ãд¸ü¶àµÄÊý¾Ý¡£ 6.¹²Ïí FIFO µÄ½ø³ÌÖ´ÐÐÍêËùÓÐµÄ I/O ²Ù×÷ÒÔºó£¬ FIFO ½«¼ÌÐø±£´æ ÔÚÎļþϵͳÖÐÒÔ±ãÒÔºóʹÓà 7. #include #include int mkfifo( const char * pathname, mode_t mode) ; ²ÎÊý£º pathname £º ·¾¶Ãû , Ò²¾ÍÊÇ´´½¨ºó FIFO µÄÃû×Ö ¡£ mode £º mode_t ÀàÐ͵ÄȨÏÞÃèÊö·û¡£ ·µ»ØÖµ£º ³É¹¦£º·µ»Ø 0 ʧ°Ü£ºÈçµÚÒ»¸ö²ÎÊýÖ¸¶¨µÄ·¾¶ÃûÒÑ´æÔÚ , »á³ö´íÇÒ·µ»Ø-1 ¡£ 9. ÐźŵĴ¦Àí·½Ê½Óм¸ÖÖ£¿ÔõÑùÖ¸¶¨ÐźŵĴ¦Àí·½Ê½£¿ £¨1£©ÈçÏ·½·¨½øÐд¦Àí£º 1.ºöÂÔ´ËÐźŠ´ó¶àÊýÐźŶ¼¿ÉÒÔʹÓÃÕâÖÖ·½Ê½´¦Àí£¬µ« SIGKILL ºÍ SIGSTOP ¾ö²»ÄÜ ±»ºöÂÔ , ÔÒòÊÇ :ËüÃÇÏò³¬¼¶Óû§ÌṩһÖÖʹ½ø³ÌÖÕÖ¹µÄ¿É¿¿·½·¨¡£ ¶Ô´ó¶àÊýÐźÅÀ´Ëµ£¬ÏµÍ³Ä¬È϶¯×÷ÊÇÖÕÖ¹¸Ã½ø³Ì¡£ 3.×Ô¶¨ÒåÐźŴ¦Àíº¯Êý ÓÃÓû§¶¨ÒåµÄÐźŴ¦Àíº¯Êý´¦Àí¸ÃÐźš£ £¨2£©´¦ÀíÐźŵĺ¯ÊýÖ÷ÒªÓÐÈçÏÂÈýÖÖ 1.signal º¯Êý #include typedef void ( * sighandler_t )(int) £» sighandler_t signal(int signum, sighandler_t handler); ¹¦ÄÜ£º ×¢²áÐźŴ¦Àíº¯Êý£¬¼´È·¶¨ÊÕµ½Ðźźó´¦Àíº¯ ÊýµÄÈë¿ÚµØÖ·¡£ ²ÎÊý£º signum £ºÐźűàºÅ 2.Ðźż¯º¯Êý×é sigemptyset sigfillset sigaddset sigdelset sigismember sigprocmask 3.Sigaction º¯Êý #include int sigaction(int signum, handler µÄȡֵ£º ºöÂÔ¸ÃÐźţº SIG_IGN Ö´ÐÐϵͳĬÈ϶¯×÷£º SIG_DFL ×Ô¶¨ÒåÐźŴ¦Àíº¯Êý£º´¦Àíº¯ÊýÃû ³É¹¦£º·µ»Øº¯ÊýÖ¸Õ룬ָÏòsignumÉÏÒ»´Î×¢²áµÄÐźŴ¦Àíº¯Êý¡£ ʧ°Ü£º·µ»Ø SIG_ERR 2.Ö´ÐÐϵͳĬÈ϶¯×÷ ·µ»ØÖµ£º const struct sigaction * act, struct sigaction * oldact) £» ¹¦ÄÜ£º ¼ì²é»òÐÞ¸ÄÖ¸¶¨ÐźŵÄÉèÖà ( »òͬʱִÐÐÕâÁ½ ÖÖ²Ù×÷¡£ ²ÎÊý£º signum £ºÐźűàºÅ act £ºÐµÄÐźÅÉèÖÃÖ¸Õë oldact £º¾ÉµÄÐźÅÉèÖÃÖ¸Õë Èç¹û act Ö¸Õë·Ç¿Õ£¬ÔòÒª¸Ä±ä Ö¸¶¨ÐźŵÄÉè Öã¬Èç¹û oldact Ö¸Õë·Ç¿Õ£¬Ôòϵͳ½«´Ëǰ Ö¸¶¨ÐźŵÄÉèÖôæÈë oldact ¡£ ·µ»ØÖµ£º 10. ½ø³ÌºÍÏß³ÌÓÐÊ²Ã´Çø±ð£¿ £¨1£©ÏàËÆÐÔ ½ø³Ì(heavyweight process, HWP)£¬Ö»ÓÐÒ»¸öÏ̵߳Ľø³Ì£¬ Ïß³Ì(lightweight process, LWP) ¡£ £¨2£©µ÷¶È Ïß³ÌÊÇ CPU µ÷¶ÈºÍ·ÖÅɵĻù±¾µ¥Î»¡£ ½ø³ÌÊÇϵͳÖгÌÐòÖ´ÐкÍ×ÊÔ´·ÖÅäµÄ»ù±¾µ¥Î»¡£ £¨3£©²¢·¢ÐÔ ²»½ö½ø³Ì¼ä¿É²¢·¢Ö´ÐУ¬¶øÇÒÒ»¸ö½ø³ÌÖеĶàÏ̼߳äÒ²¿ÉÒÔ²¢·¢Ö´ÐУ¬´Ó¶ø ÄÜ ¸üÓÐЧµØÊ¹ÓÃϵͳ×ÊÔ´ºÍÌá¸ßϵͳµÄÍÌÍÂÁ¿ £¨4£©ÏµÍ³¿ªÏú ÔÚ½ø³ÌÇл»Ê±£¬Éæ¼°µ½Õû¸öµ±Ç°½ø³Ì CPU »·¾³µÄ±£´æÒÔ¼°Ð±»µ÷¶ÈÔËÐÐµÄ ½ø³ÌµÄ CPU »·¾³µÄÉèÖ㬶øÏß³ÌÇл»Ö»ÐèÒª±£´æºÍÉèÖÃÉÙÁ¿¼Ä´æÆ÷µÄÄÚÈÝ£¬ ²¢²»Éæ¼°´æ´¢Æ÷¹ÜÀí·½ÃæµÄ²Ù×÷¡£ ͬһ¸ö½ø³ÌÖеĶà¸öÏ̹߳²ÏíͬһµØÖ·¿Õ¼ä£¬ÖÂʹËüÃÇÖ®¼äµÄͬ²½ºÍͨÐÅµÄ ÊµÏÖÒ²±äµÃ±È½ÏÈÝÒס£ £¨5£©ÓµÓÐ×ÊÔ´£º ½ø³ÌÊÇÓµÓÐϵͳ×ÊÔ´µÄÒ»¸ö¶ÀÁ¢µÄµ¥Î»£¬Ëü¿ÉÒÔÓµÓÐ×Ô¼ºµÄ×ÊÔ´¡£Ïß³Ì×Ô¼º Ò»°ã²»ÓµÓÐ×ÊÔ´£¨ÓÐÒ»µã±Ø²»¿ÉÉÙµÄ×ÊÔ´£¬³ÌÐò¼ÆÊýÆ÷ , Ò»×é¼Ä´æÆ÷ºÍÕ»£©£¬ µ«Ëü¿ÉÒÔ·ÃÎÊÆäËùÊô½ø³ÌµÄ×ÊÔ´£¬Èç½ø³Ì´úÂë¶Î£¬Êý¾Ý¶ÎÒÔ¼°ÏµÍ³×ÊÔ´£¨ÒÑ ´ò¿ªµÄÎļþ£¬ I/O É豸µÈ£©¡£ ³É¹¦£º 0 ʧ°Ü£º -1 11. ʲôÊÇÏ̵߳Ļ¥³âºÍͬ²½£¬¾ÙÀý˵Ã÷ÔõôʵÏÖÏ̵߳Ļ¥³âºÍͬ²½£¿ £¨1£©Í¬²½ :£¨ÐźÅÁ¿) Á½¸ö»òÁ½¸öÒÔÉϵÄÏß³ÌÔÚÔËÐйý³ÌÖÐРͬ²½µ÷£¬°´Ô¤¶¨µÄÏȺó´ÎÐòÔËÐС£ ¡ª £¨2£©»¥³â : (»¥³âËø) Ò»¸ö¹«¹²×ÊԴͬһʱ¿ÌÖ»Äܱ»Ò»¸öÏß³Ì Ê¹Ó㬶à¸öÏ̲߳»ÄÜͬʱʹÓù«¹²×ÊÔ´¡£ 12. ʵÏÖÈý¸ö½ø³Ì ÆäÖÐÒ»¸öÊǸ¸½ø³Ì£¬ÆäÓàÁ½¸öÊǸø¸½ø³Ì´´½¨µÄ×Ó½ø³Ì£¬ÆäÖÐÒ»¸ö×Ó½ø³ÌÔËÐС°ls ¨Cl¡±Ö¸ÁÁíÒ»¸ö×Ó½ø³ÌÔÚÔÝÍ£5sÖ®ºóÍ˳ö£¬¸¸½ø³ÌµÈ´ý×Ó½ø³ÌµÄÍ˳öÐÅÏ¢£¬´ýÊÕ¼¯µ½¸ÃÐÅÏ¢£¬¸¸½ø³Ì¾Í·µ»Ø¡£ 13. ±àдһ¸ö¶à½ø³Ì¶àÏ̵߳ijÌÐò£º ÒªÇó´´½¨4¸ö×Ó½ø³Ì£¬Ã¿¸ö½ø³Ì¶¼·Ö±ð´´½¨2¸öỊ̈߳¬½ø³ÌºÍÏ̵߳ŦÄܲ»×öÒªÇ󣬿ÉÖ»Ìṩ¼òµ¥µÄ´òÓ¡Óï¾ä¡£ ʹÓÃϵͳµ÷ÓÃpipe()½¨Á¢Ò»Ìõ¹ÜµÀÏߣ¬Á½¸ö×Ó½ø³Ì·Ö±ðÏò¹ÜµÀ¸÷дһ¾ä»°£º 14. ±àÖÆÒ»¶Î³ÌÐò£¬ÊµÏÖ½ø³ÌµÄ¹ÜµÀͨÐÅ£º Child process 1 is sending a message! Child process 2 is sending a message! ¶ø¸¸½ø³ÌÔò´Ó¹ÜµÀÖжÁ³öÀ´×ÔÓÚÁ½¸ö×Ó½ø³ÌµÄÐÅÏ¢£¬ÏÔʾÔÚÆÁÄ»ÉÏ¡£ ÒªÇ󣺸¸½ø³ÌÏȽÓÊÕ×Ó½ø³ÌP1·¢À´µÄÏûÏ¢£¬È»ºóÔÙ½ÓÊÕ×Ó½ø³ÌP2·¢À´µÄÏûÏ¢¡£ 15.Éú²úÕßÏû·ÑÕߣº ÓÐÒ»²Ö¿â£¬Éú²úÕ߸ºÔðÉú²ú²úÆ·£¬²¢·ÅÈë²Ö¿â£¬Ïû·ÑÕß´Ó²Ö¿âÖÐÄÃ×ß²úÆ·(Ïû·Ñ) ÒªÇó£º ²Ö¿âÖÐÿ´ÎÖ»ÄܽøÈëÒ»ÈË ( Éú²úÕß»òÏû·ÑÕß ) ¡£ ²Ö¿âÖпɴæ·Å²úÆ·µÄÊýÁ¿×î¶à10¸ö,µ±²Ö¿â·ÅÂúʱ£¬Éú²úÕß²»ÄÜÔÙ·ÅÈë²úÆ·¡£ µ±²Ö¿â¿Õʱ£¬Ïû·ÑÕß²»ÄÜ´ÓÖÐÈ¡³ö²úÆ·¡£ Éú²ú¡¢Ïû·ÑËٶȲ»Í¬¡£ //ÐźÅÁ¿---Ï̼߳äͨÐÅ //¡°Éú²úÕßÏû·ÑÕß¡± ÎÊÌâ #include #define msleep(x) usleep(x*1000) #define PRODUCT_SPEED 200 //Éú²úËÙ¶È #define CONSUM_SPEED 450 //Ïû·ÑËÙ¶È #define INIT_NUM 3 //²Ö¿âÔÓвúÆ·Êý #define TOTAL_NUM 10 //²Ö¿âÈÝÁ¿ sem_t p_sem, c_sem, sh_sem; int num=INIT_NUM; //²Ö¿â²úÆ·ÊýÁ¿ /*Éú²úÑÓʱ*/ void produce_delay(void) { msleep(PRODUCT_SPEED*10); } /*Ïû·ÑÑÓʱ*/ void consume_delay(void) { msleep(CONSUM_SPEED*10); } /*Ìí¼Ó²úÆ·µ½²Ö¿â*/ int add_to_lib(void) { sem_wait(&sh_sem); //»¥³â num++; msleep(300); sem_post(&sh_sem); return num; } /*´Ó²Ö¿âÖÐÈ¡³ö²úÆ·*/ int sub_from_lib(void) { sem_wait(&sh_sem); //»¥³â num--; msleep(300); sem_post(&sh_sem); return num; } /*Éú²úÕßÏß³Ì*/ void *producer(void *arg) { int num = 0; while(1) { produce_delay(); // Éú²úÑÓʱ sem_wait(&p_sem); //Éú²úÐźÅÁ¿¼õÒ» num = add_to_lib(); printf(\ sem_post(&c_sem); //Ïû·ÑÐźÅÁ¿¼ÓÒ» } } /*Ïû·ÑÕßÏß³Ì*/ void *consumer(void *arg) { int num = 0; while(1) { sem_wait(&c_sem); //Ïû·ÑÕßÐźÅÁ¿¼õÒ» num = sub_from_lib(); printf(\ sem_post(&p_sem); //Éú²úÕßÐźÅÁ¿¼ÓÒ» consume_delay(); //Ïû·ÑÑÓʱ } } int main(int argc, char *argv[]) { pthread_t tid1,tid2; sem_init(&p_sem,0,TOTAL_NUM-INIT_NUM); sem_init(&c_sem,0,INIT_NUM); sem_init(&sh_sem,0,1); pthread_create(&tid1,NULL,producer,NULL); pthread_create(&tid2,NULL,consumer,NULL); pthread_join(tid1,NULL); pthread_join(tid2,NULL); return 0; } µÚËIJ¿·Ö£ºÍøÂç±à³Ì 1) £ºÂ·ÓÉÆ÷¹¤×÷ÔÚÄÄÒ»²ã£¨A£© A£ºÁ´Â·²ã B£ºÍøÂç²ã C£º´«Êä²ã D£ºÓ¦Óòã 2) һ̨Ö÷»úҪʵÏÖͨ¹ý¾ÖÓòÍøÓëÁíÒ»¸ö¾ÖÓòÍøÍ¨ÐÅ£¬ÐèÒª×öµÄ¹¤×÷ÊÇ £¨D£© ¡£ A£º ÅäÖÃÓòÃû·þÎñÆ÷ B £º¶¨ÒåÒ»Ìõ±¾»úÖ¸ÏòËùÔÚÍøÂçµÄ·ÓÉ C £º¶¨ÒåÒ»Ìõ±¾»úÖ¸ÏòËùÔÚÍøÂçÍø¹ØµÄ·ÓÉ D £º¶¨ÒåÒ»Ìõ±¾»úÖ¸ÏòÄ¿±êÍøÂçÍø¹ØµÄ·ÓÉ 3) ÏÂÁÐÌá·¨ÖУ¬²»ÊôÓÚifconfigÃüÁî×÷Ó÷¶Î§µÄÊÇ £¨D£© ¡£ A£º ÅäÖñ¾µØ»Ø»·µØÖ· B £ºÅäÖÃÍø¿¨µÄIPµØÖ· C £º¼¤»îÍøÂçÊÊÅäÆ÷ D£º ¼ÓÔØÍø¿¨µ½ÄÚºËÖÐ 4) ÏÂÃæµÄÍøÂçÐÒéÖУ¬ÃæÏòÁ¬½ÓµÄµÄÐÒéÊÇ£º£¨D£© ¡£ A£º´«Êä¿ØÖÆÐÒé C £ºÍø¼ÊÐÒé B £ºÓû§Êý¾Ý±¨ÐÒé D£º Íø¼Ê¿ØÖƱ¨ÎÄÐÒé 5) ÔÚ¾ÖÓòÍøÂçÄÚµÄij̨Ö÷»úÓÃpingÃüÁî²âÊÔÍøÂçÁ¬½Óʱ·¢ÏÖÍøÂçÄÚ²¿µÄÖ÷»ú¶¼¿ÉÒÔÁ¬Í¬£¬¶ø²»ÄÜÓë¹«ÍøÁ¬Í¨£¬ÎÊÌâ¿ÉÄÜÊÇ£¨C£© A Ö÷»úIPÉèÖÃÓÐÎó B ûÓÐÉèÖÃÁ¬½Ó¾ÖÓòÍøµÄÍø¹Ø C ¾ÖÓòÍøµÄÍø¹Ø»òÖ÷»úµÄÍø¹ØÉèÖÃÓÐÎó D ¾ÖÓòÍøDNS·þÎñÆ÷ÉèÖÃÓÐÎó 6) DHCPÊǶ¯Ì¬Ö÷»úÅäÖÃÐÒéµÄ¼ò³Æ£¬Æä×÷ÓÃÊÇ¿ÉÒÔÊ¹ÍøÂç¹ÜÀíԱͨ¹ýһ̨·þÎñ Æ÷À´¹ÜÀíÒ»¸öÍøÂçϵͳ£¬×Ô¶¯µØÎªÒ»¸öÍøÂçÖеÄÖ÷»ú·ÖÅ䣨D£©µØÖ·¡£ A £ºUDP B £ºMAC C£º TCP D£º IP 7) ÔÚTCP/IPÄ£ÐÍÖУ¬Ó¦Óòã°üº¬ÁËËùÓеĸ߲ãÐÒ飬ÔÚÏÂÁеÄһЩӦÓÃÐÒé ÖУ¬£¨B£©ÊÇÄܹ»ÊµÏÖ±¾µØÓëÔ¶³ÌÖ÷»úÖ®¼äµÄÎļþ´«Ê乤×÷¡£ A telnet B FTP C£º SNMP D£º NFS 8) µ±ÎÒÃÇÓëijԶ³ÌÍøÂçÁ¬½Ó²»ÉÏʱ£¬¾ÍÐèÒª¸ú×Ù·Óɲ鿴£¬ÒÔ±ãÁ˽âÔÚÍøÂçµÄ ʲôλÖóöÏÖÁËÎÊÌ⣬Âú×ã¸ÃÄ¿µÄµÄÃüÁîÊÇ£¨C£©¡£ A :ping B: ifconfig C :traceroute D: netstat 9) ¹ØÓÚ´úÀí·þÎñÆ÷µÄÂÛÊö£¬ÕýÈ·µÄÊÇ( A)¡£ A £ºÊ¹ÓÃinternetÉÏÒÑÓеĹ«¿ª´úÀí·þÎñÆ÷£¬Ö»ÐèÅäÖÿͻ§¶Ë¡£ B £º´úÀí·þÎñÆ÷Ö»ÄÜ´úÀí¿Í»§¶ËhttpµÄÇëÇó¡£ C £ºÉèÖúõĴúÀí·þÎñÆ÷¿ÉÒÔ±»ÍøÂçÉÏÈκÎÖ÷»úʹÓᣠD £ºÊ¹ÓôúÀí·þÎñÆ÷µÄ¿Í»§¶ËûÓÐ×Ô¼ºµÄipµØÖ·¡£ 10) ¹«Ë¾ÐèÒª°Ñ192.168.3.0 /255.255.255 Íø¶Î»®·Ö³É10¸ö×ÓÍø£¬×ÓÍøÑÚÂëÓ¦ ¸ÃÊÇ(C )£¿ A£º255.255.255.5 C£º255.255.255.240 ¶þ£ºÌî¿ÕÌâ 1) ÍøÂç192.168.220.0/24 ¶¨Ïò¹ã²¥µØÖ·ÊÇ£¨192.168.220.0£©£¬ÊÜÏ޵Ĺ㲥µØÖ·Îª£¨255.255.255.255 £©£¬¶¨Ïò¹ã²¥ºÍÊÜÏ޹㲥µÄÇø±ð£¨£©£» ÔÚIPµØÖ·ÖеÄÈ«1µØÖ·±íʾ½öÔÚ±¾ÍøÂçÉÏ£¨¾ÍÊÇÄãÕâ¸öÖ÷»úËùÁ¬½ÓµÄ¾ÖÓòÍø£©½øÐй㲥¡£ÕâÖֹ㲥½Ð×öÊÜÏ޵Ĺ㲥(limited broadcast) Èç¹ûnet-idÊǾßÌåµÄÍøÂçºÅ£¬¶øhost-idÊÇÈ«1£¬¾Í½Ð×ö¶¨Ïò¹ã²¥(directed broadcast)£¬ÒòΪÕâÊǶÔijһ¸ö¾ßÌåµÄÍøÂ磨¼´net-idÖ¸Ã÷µÄÍøÂ磩ÉϵÄËùÓÐÖ÷»ú½øÐй㲥µÄÒ»ÖÖµØÖ·¡£ ¶ÔÓÚ192.168.1.25/24µÄÍø¶Î IPµØÖ·È«0,¼´0.0.0.0Ϊ±¾µØÖ÷»ú IPµØÖ·È«1,¼´255.255.255.255Ϊ±¾µØ¹ã²¥£¨¿ÉÄÜÓм¸¸ö²»Í¬µÄÍø¶Î£© Ö÷»úºÅÈ«0,¼´192.168.1.0Ϊ±¾Íø¶ÎÍøÂçµØÖ· Ö÷»úºÅÈ«1,¼´192.168.1.255Ϊ±¾Íø¶Î¹ã²¥µØÖ· ÍøÂçºÅÈ«0,Ö÷»úºÅÈ«1£¬¼´0.0.0.255Ϊ±¾µØÍø¶Î 2) tcp/ipÄ£ÐÍÖнø³Ìµ½½ø³ÌÖ®¼äͨÐÅÊôÓÚ£¨´«Ê䣩²ã£¬Ö÷»úµ½Ö÷»úÊôÓÚ(ÍøÂ磩²ã£¬É豸µ½É豸ÊôÓÚ£¨Á´Â·£©²ã£¬³ÌÐòµ½³ÌÐòÊôÓÚ£¨Ó¦Ó㩲㡣 3) PingÃüÁîµÄ¹¦ÄÜΪ£¨¼ì²âÖ÷»ú £©¡£ 4) ½øÐÐÔ¶³ÌµÇ¼µÄÃüÁîÊÇ £¨ telenet £©¡£ 5) DNS ÓòÃûϵͳµÄ×÷ÓÃÊÇ£¨ ½«ÓòÃûºÍIPµØÖ·Ï໥ӳÉä £©¡£ B£º255.255.255.4 D£º255.255.255.248 Èý£ºÎÊ´ðÌ⣨±¾Ìâ¹²4СÌ⣬ÿÌâ6·Ö¹²24·Ö£© 1) ¼òÊöTCP/IPÐÒéÖи÷²ãµÄÖ÷Òª¹¦ÄÜ£¬¸÷ÓÐÄÄЩÖ÷ÒªÐÒé¡£ TCP/IP ÐÒé ×å Ó¦Óò㣺ӦÓóÌÐò¼ä¹µÍ¨µÄ²ã FTP ¡¢ Telnet ¡¢ HTTP ¡¢ SMTP etc. ´«Êä²ã£ºÌṩ½ø³Ì¼äµÄÊý¾Ý´«ËÍ·þÎñ ÕâÒ»²ã¸ºÔð´«ËÍÊý¾Ý£¬ÌṩӦÓóÌÐò¶Ëµ½¶ËµÄÂ߼ͨÐÅ ´«Êä¿ØÖÆÐÒ飨 TCP £©£¬Óû§Êý¾Ý±¨ÐÒ飨 UDP £© ÍøÂç²ã£ºÌṩ»ù±¾µÄÊý¾Ý·â°ü´«Ë͹¦ÄÜ ¾¡×î´ó¿ÉÄܵÄÈÃÿ¸öÊý¾Ý°ü¶¼Äܹ»µ½´ïÄ¿µÄÖ÷»ú IPÐÒé ( Íø¼ÊÐÒé ) Á´Â·²ã£º¶Ôʵ¼ÊµÄÍøÂçýÌå½øÐйÜÀí£¬¶¨ÒåÈçºÎʹÓÃʵ¼Ê ÍøÂçÀ´´«ËÍÊý¾Ý 2) ʲôÊÇTCP ¡¢UDP £¿ÐÒéÓÅȱµã£¬Ó¦Óó¡ºÏ£¿ (1)TCP ÐÒé 1.Ìṩ½ø³Ì¼äͨÐÅÄÜÁ¦ 2.TCP ÐÒé¿ÉÒÔ¶Ô°ü½øÐÐÅÅÐò²¢¼ì²é´íÎó£¬Í¬Ê±ÊµÏÖÐéµç·¼äµÄÁ¬½Ó 3.TCP Êý¾Ý°üÖаüÀ¨ÐòºÅºÍÈ·ÈÏÐòºÅ 4.δ°´ÕÕ˳ÐòÊÕµ½µÄ°ü¿ÉÒÔ±»ÅÅÐò£¬¶øË𻵵İü¿ÉÒÔ±»ÖØ´« 5.ÃæÏòÁ¬½ÓµÄ·þÎñ£¨ÀýÈç Telnet ¡¢ FTP ¡¢ Rlogin ¡¢ X Windows ºÍ SMTP £©ÐèÒª¸ß¶ÈµÄ¿É¿¿ÐÔ£¬ËüÃÇʹÓÃTCP À´ÊµÏÖ (2)UDP ÐÒé 1.Ìṩ½ø³Ì¼äͨÐÅÄÜÁ¦ 2.UDP Óë TCP λÓÚͬһ²ã 3.²»¶ÔÊý¾Ý°üµÄ˳Ðò½øÐмì²é 4.ûÓдíÎó¼ì²âºÍÖØ´«»úÖÆ 5.Ó¦ÓÃÓÚÃæÏòÎÞÁ¬½ÓµÄ·þÎñ 6.Ö÷ÒªÓÃÓÚÄÇÐ©ÃæÏò²éѯ ¡ª¡ª Ó¦´ðµÄ·þÎñ 7.ÀýÈç NFS ¡¢ NTP £¨ÍøÂçʱ¼äÐÒ飩ºÍ DNS £¨ÓòÃû½âÎöÐÒ飩 8.ÆÛÆ UDP °ü±ÈÆÛÆ TCP °ü¸üÈÝÒ×£¬ÒòΪ UDP ûÓн¨Á¢³õʼ»¯Á¬½Ó £¨Ò²¿ÉÒÔ³ÆÎªÎÕÊÖ£©£¬¼´Óë UDP Ïà¹ØµÄ·þÎñÃæÁÙןü´óµÄΣÏÕ 3) ¼òÊöTCP/IPÐÒéÖÐÈý´ÎÎÕÊֵĹý³Ì¼°ºÒå µÚÒ»´ÎÎÕÊÖ£º½¨Á¢Á¬½Óʱ£¬¿Í»§¶Ë·¢ËÍsyn°ü(syn=j)µ½·þÎñÆ÷£¬²¢½ø ÈëSYN_SEND״̬£¬µÈ´ý·þÎñÆ÷È·ÈÏ£»SYN£ºÍ¬²½ÐòÁбàºÅ(Synchronize Sequence Numbers)¡£ µÚ¶þ´ÎÎÕÊÖ£º·þÎñÆ÷ÊÕµ½syn°ü£¬±ØÐëÈ·ÈϿͻ§µÄACK£¨ack=j+1£©£¬Í¬Ê±×Ô¼ºÒ²·¢ËÍÒ»¸öSYN°ü£¨syn=k£©£¬¼´SYN+ACK°ü£¬´Ëʱ·þÎñÆ÷½øÈëSYN_RECV״̬£» µÚÈý´ÎÎÕÊÖ£º¿Í»§¶ËÊÕµ½·þÎñÆ÷µÄSYN+ACK°ü£¬Ïò·þÎñÆ÷·¢ËÍÈ·ÈÏ °üACK(ack=k+1)£¬´Ë°ü·¢ËÍÍê±Ï£¬¿Í»§¶ËºÍ·þÎñÆ÷½øÈëESTABLISHED״̬£¬Íê³ÉÈý´ÎÎÕÊÖ¡£ Èý´ÎÎÕÊÖ£¨three times handshake£»three-way handshaking£©ËùνµÄ¡°Èý´ÎÎÕÊÖ¡±¼´¶Ôÿ´Î·¢Ë͵ÄÊý¾ÝÁ¿ÊÇÔõÑù¸ú×Ù½øÐÐÐÉÌʹÊý¾Ý¶ÎµÄ·¢ËͺͽÓÊÕͬ²½£¬¸ù¾ÝËù½ÓÊÕµ½µÄÊý¾ÝÁ¿¶øÈ·¶¨µÄÊý¾ÝÈ·ÈÏÊý¼°Êý¾Ý·¢ËÍ¡¢½ÓÊÕÍê±ÏºóºÎʱ³·ÏûÁªÏµ£¬²¢½¨Á¢ÐéÁ¬½Ó¡£ 4) ¼òÊöTCP/IPÄ£ÐÍÖÐÓ¦ÓòãÊý¾Ý´ÓÖ÷»úA·¢Ë͵½Ö÷»úBµÄÕû¸ö¹ý³Ì¡£ /****************1_send_broad.c*****************/ 5) ÀûÓÃsetsockopt()ʹÓÃǶÌ××ÖÖ§³Ö¹ã²¥£¬²¢±àдÁ½¸ö³ÌÐò£¬ÆäÖÐÒ»¸ö ·¢Ë͹㲥Êý¾Ý£¬ÁíÒ»¸ö½ÓÊչ㲥Êý¾Ý¡£ #include #define BROAD_IP \#define BROAD_PORT 2425 #define BROAD_MSG \ int main(int argc, char **argv) { int fd_sock = 0; const int socket_opt_bc = 1; struct sockaddr_in broad_addr; bzero(&broad_addr, sizeof(broad_addr)); broad_addr.sin_family = AF_INET; broad_addr.sin_port = htons(BROAD_PORT); inet_pton(AF_INET, BROAD_IP, &broad_addr.sin_addr); if((fd_sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0){ perror(\ exit(1); } if(setsockopt(fd_sock, SOL_SOCKET, SO_BROADCAST, &socket_opt_bc, (socklen_t)sizeof(socket_opt_bc)) != 0){ perror(\ return -1; }// ÉèÖù㲥ѡÏî while(1){ sendto(fd_sock, BROAD_MSG, strlen(BROAD_MSG), 0, (struct sockaddr*)&broad_addr, sizeof(struct sockaddr)); } close(fd_sock); } /*****************1_recv_broad.c*********************/ #include #include #define SELF_PORT 2425 int main(int argc, char **argv) { int fd_sock = 0; char msg_buf[512] = \ int ret = 1; struct sockaddr_in self_addr; bzero(&self_addr, sizeof(self_addr)); self_addr.sin_family = AF_INET; self_addr.sin_port = htons(SELF_PORT); self_addr.sin_addr.s_addr = htonl(INADDR_ANY); if((fd_sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0){ perror(\ exit(1); } if(bind(fd_sock, (struct sockaddr*)&self_addr, sizeof(struct sockaddr)) == -1){ perror(\ close(fd_sock); exit(2); }// °ó¶¨ while(ret > 0){ bzero(msg_buf, sizeof(msg_buf)); ret = recvfrom(fd_sock, msg_buf, sizeof(msg_buf), 0, NULL, NULL); printf(\ } close(fd_sock); exit(EXIT_SUCCESS); } 6) ±àдһ¸öUDPÀàÐ͵Äclient/serverʵÀý¡£ /********************qq_thread.c**************************/ #include #include //½ÓÊÕỊ̈߳º¸ºÔð½ÓÊÕÏûÏ¢²¢ÏÔʾ void *recv_thread(void* arg) { int udpfd = (int)arg; struct sockaddr_in addr; socklen_t addrlen = sizeof(addr); bzero(&addr,sizeof(addr)); while(1) { char buf[200] = \ char ipbuf[16] = \ recvfrom(udpfd, buf, sizeof(buf), 0, (struct sockaddr*)&addr, &addrlen); printf(\in_addr,ipbuf,sizeof(ipbuf)),buf); write(1,\ } return NULL; } int main(int argc,char *argv[]) { char buf[100] = \ int udpfd = 0; pthread_t tid; struct sockaddr_in addr; struct sockaddr_in cliaddr; //¶ÔÌ×½Ó×ÖµØÖ·½øÐгõʼ»¯ bzero(&addr,sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(8001); addr.sin_addr.s_addr = htonl(INADDR_ANY); bzero(&cliaddr,sizeof(cliaddr)); cliaddr.sin_family = AF_INET; cliaddr.sin_port = htons(8001); //´´½¨Ì×½Ó¿Ú if( (udpfd = socket(AF_INET,SOCK_DGRAM, 0)) < 0) { perror(\ exit(-1); } //ÉèÖÃ¶Ë¿Ú if(bind(udpfd, (struct sockaddr*)&addr, sizeof(addr)) < 0) { perror(\ close(udpfd); exit(-1); } printf(\\\\192.168.221.X\\\to sendmsg to somebody\\n\ //´´½¨½ÓÊÕÏß³Ì pthread_create(&tid, NULL, recv_thread, (void*)udpfd); //´´½¨Ïß³Ì printf(\ÉèÖÃ×ÖÌåÑÕÉ« fflush(stdout); while(1) { //Ö÷Ï̸߳ºÔð·¢ËÍÏûÏ¢ write(1,\±íʾ±ê×¼Êä³ö fgets(buf, sizeof(buf), stdin); //µÈ´ýÊäÈë buf[strlen(buf) - 1] = '\\0'; //È·±£ÊäÈëµÄ×îºóһλÊÇ'\\0' if(strncmp(buf, \ { char ipbuf[INET_ADDRSTRLEN] = \ inet_pton(AF_INET, buf+6, &cliaddr.sin_addr); //¸øaddrÌ×½Ó×ÖµØÖ·ÔÙ¸³Öµ. printf(\%s successful!\\n\pbuf))); continue; } else if(strncmp(buf, \ { close(udpfd); exit(0); } sendto(udpfd, buf, strlen(buf),0,(struct sockaddr*)&cliaddr, sizeof(cliaddr)); } return 0; } 7) ±àдһ¸öUDP¶Ë¿ÚɨÃè³ÌÐò¡£ 8) ÈçºÎÔÚ±à³ÌÖзÀÖ¹»º³åÇøÒç³ö£¿ 9) дһ¸öTCP ²¢·¢µÄ·þÎñÆ÷£¬ÊµÏÖecho¹¦ÄÜ¡£ /* ********************************************* * Filename: tcp_echo_pthread.c * Description: * Compiler: gcc * *********************************************/ #include #include #include void *Client_Process(void *arg) { int recvLen = 0; char recvbuf[2048] = \ // ½ÓÊÕ»º³åÇø int connfd = (int)arg; while((recvLen = read(connfd, recvbuf, sizeof(recvbuf))) > 0) { write(connfd, recvbuf, recvLen); } printf(\ close(connfd); return NULL; } int main(int argc, char *argv[]) { int sockfd = 0; // Ì×½Ó×Ö struct sockaddr_in servAddr; // ·þÎñÆ÷µØÖ·½á¹¹Ìå unsigned short port = 8000; // ¼àÌý¶Ë¿Ú pthread_t thread_id; if(argc > 1) // ÓɲÎÊý½ÓÊÕ¶Ë¿Ú { port = atoi(argv[1]); } printf(\ sockfd = socket(AF_INET, SOCK_STREAM, 0);//´´½¨TCPÌ×½Ó×Ö if(sockfd < 0) { perror(\ exit(-1); } bzero(&servAddr, sizeof(servAddr)); // ³õʼ»¯·þÎñÆ÷µØÖ· servAddr.sin_family = AF_INET; servAddr.sin_port = htons(port); servAddr.sin_addr.s_addr = htonl(INADDR_ANY); printf(\ if(bind(sockfd, (struct sockaddr*)&servAddr, sizeof(struct sockaddr)) != 0) { perror(\ close(sockfd); exit(-1); } if(listen(sockfd, 10) != 0) { perror(\ close(sockfd); exit(-1); } printf(\ while(1) { char cliIP[INET_ADDRSTRLEN] = \Óñ£´æ¿Í»§¶ËIPµØÖ· struct sockaddr_in cliAddr; //ÓÃÓÚ±£´æ¿Í»§¶ËµØÖ· socklen_t cliAddrLen = sizeof(cliAddr); //±ØÐë³õʼ»¯ int connfd = accept(sockfd, (struct sockaddr*)&cliAddr, &cliAddrLen);// »ñµÃÒ»¸öÒѾ½¨Á¢µÄÁ¬½Ó if(connfd < 0) { perror(\ close(sockfd); exit(-1); } inet_ntop(AF_INET, &cliAddr.sin_addr, cliIP, INET_ADDRSTRLEN); printf(\ if(connfd > 0) { pthread_create(&thread_id ,NULL,(void *)Client_Process,(void *)connfd); pthread_detach(thread_id); } } close(sockfd); return 0; } 10) дһ¸öUDP echo·þÎñÆ÷ //=============================================== // ÎļþÃû³Æ£ºudp_echo_srv.c // ¹¦ÄÜÃèÊö£ºUDP Echo Server // ά»¤¼Ç¼£º2008-12-25 V1.0 // 2011-08-15 V1.1 //================================================ #include int main(int argc, char *argv[]) { int sockfd = 0; struct sockaddr_in bindAddr; unsigned short port = 8000; if(argc > 1) { port = atoi(argv[1]); } printf(\ sockfd = socket(AF_INET, SOCK_DGRAM, 0); if(sockfd < 0) { perror(\ exit(-1); } bzero(&bindAddr, sizeof(bindAddr)); bindAddr.sin_family = AF_INET; bindAddr.sin_port = htons(port); bindAddr.sin_addr.s_addr = htonl(INADDR_ANY); printf(\ if(bind(sockfd, (struct sockaddr*)&bindAddr, sizeof(bindAddr)) != 0) { perror(\ close(sockfd); exit(-1); } printf(\ while(1) { char recvBuf[2048] = \ char cliIP[INET_ADDRSTRLEN] = \ int recvLen = 0; struct sockaddr_in cliAddr; socklen_t cliAddrLen = sizeof(cliAddr); recvLen = recvfrom(sockfd, recvBuf, 2048, 0, (struct sockaddr*)&cliAddr, &cliAddrLen); printf(\ip = %s\\n\inet_ntop(AF_INET, &cliAddr.sin_addr, cliIP, INET_ADDRSTRLEN)); sendto(sockfd, recvBuf, recvLen, 0, (struct sockaddr*)&cliAddr, cliAddrLen); } close(sockfd); return 0; } //==================================================== // ÎļþÃû³Æ£ºudp_echo_cli.c // ¹¦ÄÜÃèÊö£ºUDP Echo Client // ά»¤¼Ç¼£º2008-12-25 V1.0 // 2011-08-15 V1.1 //==================================================== #include int main(int argc, char *argv[]) { int sockfd = 0; struct sockaddr_in srvAddr; unsigned short port = 8000; char *srvIP = \ if( argc > 1 ) //·þÎñÆ÷ipµØÖ· { srvIP = argv[1]; } if( argc > 2 ) //·þÎñÆ÷¶Ë¿Ú { port = atoi(argv[2]); } sockfd = socket(AF_INET, SOCK_DGRAM, 0);//´´½¨UDPÌ×½Ó×Ö if(sockfd < 0) { perror(\ exit(-1); } bzero(&srvAddr, sizeof(srvAddr)); srvAddr.sin_family = AF_INET; srvAddr.sin_port = htons(port); inet_pton(AF_INET, srvIP, &srvAddr.sin_addr); printf(\ while(1) { char sendBuf[2048] = \ int len = 0; fgets(sendBuf, sizeof(sendBuf), stdin); sendto(sockfd, sendBuf, strlen(sendBuf), 0, (struct sockaddr*)&srvAddr, sizeof(srvAddr)); len = recvfrom(sockfd, sendBuf, sizeof(sendBuf), 0, NULL, NULL); sendBuf[len] = '\\0'; printf(\ } close(sockfd); return 0; } µÚÎ岿·Ö£ºÇ¶Èëʽƽ̨¼Ü¹¹ 1. ʲôÊÇǶÈëʽϵͳ£¬ÃèÊöÒ»ÏÂÄã¶ÔǶÈëʽϵͳµÄÀí½â£¿ ¶¨Ò壺ÒÔÓ¦ÓÃΪÖÐÐÄ£¬ÒÔ¼ÆËã»ú¼¼ÊõΪ»ù´¡£¬ÇÒÈíÓ²¼þ¿É²Ã¼õ£¬ÊÊÓ¦Ó¦ÓÃϵͳ¶Ô¹¦ÄÜ¡¢¿É¿¿ÐÔ¡¢³É±¾¡¢Ìå»ý¡¢¹¦ºÄµÄÑϸñÒªÇóµÄרÓüÆËã»úϵͳ 2. ´î½¨Ò»¸öÍêÕûµÄǶÈëʽLinux¿ª·¢Æ½Ì¨ÐèÒª×öÄÄЩ¹¤×÷£¬ÃèÊöÒ»ÏÂÏêϸ²½ Ö裿 ͨ³£»ùÓÚlinuxϵͳµÄǶÈëʽ¿ª·¢²½ÖèÈçÏ£º 1£®¿ª·¢Ä¿±êÓ²¼þϵͳ£º ÈçÑ¡Ôñ΢´¦ÀíÆ÷¡¢Flash¼°ÆäËüÍâÉèµÈ 2£®½¨Á¢½»²æ¿ª·¢»·¾³£º °²×°½»²æ±àÒ빤¾ßÁ´¡¢ÅäÖô®¿ÚͨÐŹ¤¾ß¡¢ÅäÖÃÍøÂçͨÐŹ¤¾ßµÈ 3£®¿ª·¢Bootloader£º ÒÆÖ²Bootloader£¬Èçvivi 4£®ÒÆÖ²linuxÄںˣº Èçlinux2.4.18ÄÚºËÒÆÖ² 5£®¿ª·¢¸ùÎļþϵͳ£º ÈçCRAMFSÎļþϵͳµÄÖÆ×÷ 6£®¿ª·¢Ïà¹ØÓ²¼þµÄÇý¶¯³ÌÐò£ºÈçLCD¡¢Íø¿¨¡¢GPIOµÈ Application7£®¿ª·¢ÉϲãµÄÓ¦ÓóÌÐò£ºÈçÍøÂç¡¢QT GUI¿ª·¢ Ƕ---------------------------------------------------------------- Device DriverÈëʽǶÈëʽϵͳ¿ª·¢Á÷³Ì£¨ÓвÙ×÷ϵ ϵͳRoot File Systerm ͳ£© Ò»°ãµÄ Ó²¼þ¿ª·¢ ¿ªEmbedded OS KernelÆô¶¯¼ÓÔØ³Ì (bootloader£© ·¢ ·½Ïò ²Ù×÷ϵͳÄÚºË(kernel) BootLoader ¸ùÎļþϵͳ (root) HardWare É豸Çý¶¯ (driver) Ó¦ÓóÌÐò (½ø³Ì¡¢Ï̡߳¢GUI¡¢Íø Âç¡¢Êý¾Ý¿âµÈ) ApplicationÂã--------------------------------------------------------------- »ú³Ì ǶÈëʽϵͳ¿ª·¢Á÷³Ì ÐòDevice DriverµÄ£¨ÎÞ²Ù×÷ϵͳ£© Ò»°ã Ó²¼þ¿ª·¢£¨PCB¡¢ÔÀíͼ£© ¿ªStart.s·¢ Æô¶¯´úÂ루Ӳ¼þ³õʼ»¯£© ·½ É豸Çý¶¯£¨Âã»úÏÂÇý¶¯£© ÏòHardWare Ó¦ÓóÌÐò£¨µ¥ÈÎÎñ£© ------------------------------------------------------------------- 3. ʲôÊÇBootloader£¬ÏêϸÃèÊöÒ»ÏÂÄã¶ÔBootloaderµÄÀí½â¡£³£ÓÃµÄ BootloaderÓÐÄÄЩ£¿ £¨1£©Bootloader£ºÆô¶¯Òýµ¼³ÌÐò £¨2£©bootloaderÒ»°ãÌØÖ¸ÔÚ²Ù×÷ϵͳÏ£º 1.ÔÚ²Ù×÷ϵͳÔËÐÐ֮ǰÔËÐеÄÒ»¶Î»ò¶à¶Î³ÌÐò 2.³õʼ»¯Ó²¼þÉ豸¡¢½¨Á¢ÏµÍ³µÄÄÚ´æ¿Õ¼äÓ³Éäͼ£¬½«ÏµÍ³µÄÈí¼þÓ²¼þ»·¾³´ø µ½Ò»¸öºÏÊʵÄ״̬£¬Îªµ÷ÓòÙ×÷ϵͳÄÚºË×¼±¸ºÃÕýÈ·µÄ»·¾³ 3.°Ñ²Ù×÷ϵͳÄÚºËÓ³Ïñ¼ÓÔØµ½RAMÖУ¬²¢½«ÏµÍ³¿ØÖÆÈ¨½»¸øËü £¨3£©Õë¶Ô²»Í¬µÄcpu¼Ü¹¹¶ÔbootloaderµÄÒªÇó²»Í¬ 1.Õë¶ÔX86ÉÏÓÐLILO¡¢GRUB¡¢ntloaderµÈ 2.Õë¶ÔARM¼Ü¹¹µÄÓÐu-boot¡¢vivi¡¢armbootµÈ 3.Õë¶Ôppc¼Ü¹¹µÄÓÐppcbootµÈ 4. BootloaderµÄÆô¶¯¹ý³ÌÒ»°ã·ÖΪÁ½¸ö½×¶Î£¬ÒÔviviΪÀý˵Ã÷BootloaderµÄÁ½¸ö½×¶ÎÍê³Éʲô¹¤×÷¡£ ϵͳ¸´Î»Êä³övivi °æ±¾ºÅ ½ûÖ¹¿´ÃŹ·¿ª·¢°å³õʼ»¯¹Ø±ÕÖжÏÄÚ´æÓ³Éä³õʼ»¯ÏµÍ³Ê±ÖÓ³õʼ»¯¶Ñ´æ´¢Æ÷£¨bank0-bank7£©ÉèÖóõʼ»¯MTDÉ豸uart³õʼ»¯³õʼ»¯Ë½ÓÐÊý¾Ý¿½±´µÚ¶þ½×¶Î´úÂë³õʼ»¯ÄÚÖÃÃüÁîÌøµ½µÚ¶þ½×¶Î´úÂëÆô¶¯vivi-shell»òboot viviµÄstage1ʵ¼ÊÍê³ÉµÄÖ÷ÒªÈÎÎñ£º 1.½ûÓÿ´ÃŹ·¡¢¹Ø±ÕËùÓÐÖжϡ¢³õʼ»¯ÏµÍ³Ê±ÖÓ (ΪÖжÏÌṩ·þÎñͨ³£ÊÇOSÉ豸Çý¶¯³ÌÐòµÄÔðÈΣ¬Òò´ËÔÚBoot Loader µÄÖ´ÐÐÈ«¹ý³ÌÖпÉÒÔ²»±ØÏìÓ¦ÈκÎÖжÏ) 2.ÄÚ´æÉèÖÃ(ÉèÖÃS3C2410µÄºÍÄÚ´æÏà¹ØµÄ13¸ö¼Ä´æÆ÷) 3.³õʼ»¯µ÷ÊÔָʾµÆ£¨¿ÉÑ¡£© 4.³õʼ»¯UART£¬×÷Ϊµ÷ÊÔ¿Ú£¨¿ÉÑ¡£© 5.´ÓNAND»òNOR ¸´ÖÆ´úÂëµ½SDRAM 6.Ìø×ªµ½main£¬½øÈëstage2 viviµÄstage2ʵ¼ÊÍê³ÉµÄÖ÷ÒªÈÎÎñ step1£º´òÓ¡°æ±¾ÐÅÏ¢ step2£º³õʼ»¯GPIO step3£º MMU³õʼ»¯ step4£º¶Ñ³õʼ»¯ step5£º MTDÉ豸³õʼ»¯ step6£º´æ·ÅviviµÄ˽ÓвÎÊý step7£ºÌí¼ÓviviÖ§³ÖµÄÃüÁî step8£º¸ù¾ÝÓû§Ñ¡Ôñ½øÈëviviÃüÁîģʽ»òÆô¶¯ÄÚºË 5. ʲôÊÇBootloaderµÄ¡°Æô¶¯¼ÓÔØÄ£Ê½¡±ºÍ¡°ÏÂÔØÄ£Ê½¡±£¿ Æô¶¯¼ÓÔØ£¨Boot loading£©Ä£Ê½£º BootLoader´ÓÄ¿±ê»úÉÏij¸ö¹Ì̬´æ´¢É豸ÉϽ«²Ù×÷ϵͳ¼ÓÔØµ½RAMÖÐÔË ÐУ¬Õû¸ö¹ý³Ì²¢Ã»ÓÐÓû§µÄ½éÈë ÔÚǶÈëʽ²úÆ··¢²¼Ê±£¬BootLoader¹¤×÷ÔÚ´Ëģʽ ÏÂÔØ£¨Down loading£©Ä£Ê½£º ¿ª·¢ÈËÔ±¿ÉÒÔʹÓø÷ÖÖÃüÁͨ¹ý´®¿ÚÁ¬½Ó»òÍøÂçÁ¬½ÓµÈͨÐÅÊֶδÓÖ÷ »úÏÂÔØÎļþ¡£±ÈÈ磺ÏÂÔØÓ¦ÓóÌÐò¡¢Êý¾ÝÎļþ¡¢ÄÚºËÓ³ÏñµÈ BootLoaderµÄÕâÖÖģʽͨ³£ÔÚϵͳ¸üÐÂʱʹÓà 6. viviµÄÃüÁîÊÇÔõÑùʵÏֵģ¿ Ìí¼Ó×Ô¶¨ÒåÃüÁîµÄ²½Öè-1£º Ê×Ïȹ¹ÔìÒ»¸öuser_commandµÄʵÀý£¬±ÈÈ磺 user_command_t mytest_cmd = { ¡°mytest\ command_mytest, NULL, ¡°asdasd¡± }; Ìí¼Ó×Ô¶¨ÒåÃüÁîµÄ²½Öè-2£º È»ºóʵÏÖÃüÁîµÄÕæÕýº¯Êýcommand_mytest void command_mytest(int argc, const char **argv) { if(argc == 2) { if((strncmp(argv[1],¡°help¡±,strlen(argv[1]))) ==0) { printk(¡°myTest Command Help\\n¡±); return; } } printk(¡°myTest Command exec\\n¡±); return; } Ìí¼Ó×Ô¶¨ÒåÃüÁîµÄ²½Öè-3 ½«ÃüÁî¼ÓÈ뵽ϵͳ ÔÚcommand.cÖÐµÄ int init_builtin_cmds(void) º¯ÊýµÄ×îºó¼ÓÈ룺add_command(&mytest_cmd); Éú³Évivi¾µÏñ make clean make menuconfig make ÉÕ¼£ºload flash vivi x ²âÊÔ£º½øÈëvivi£¬Ö´ÐÐÃüÁmytest 7. vivi´«µÝ¸øÄں˵IJÎÊý¡°noinitrd root=/dev/bon/2 init=/linuxrc console=ttyS0¡±ÊÇʲôÒâ˼£¿ ÄÚºËÆô¶¯ËùÐèÒªµÄ²ÎÊý£º ¸ùÎļþλÖá¢init³ÌÐò£¬Äں˿ØÖÆÌ¨ ´ú±íĬÈÏ´Óbon/2µÄλÖÃÆô¶¯¸ùÎļþϵͳ root£º Ö¸¶¨Á˸ùÎļþϵͳÔÚFLASH·ÖÇøÖеÄλÖà console£ºÖ¸¶¨ÁËÄÚºËÆô¶¯ºóÊ×Ñ¡µÄ¿ØÖÆÌ¨ init£º Ö¸¶¨ÁËlinuxÄÚºËÆô¶¯Íê±Ïºóµ÷ÓõĵÚÒ»¸öÓû§Ì¬³ÌÐò£¬¼´½ø³Ì ºÅΪ2µÄ½ø³Ì¡£ 8. ÔõÑù°ÑÒ»¸öSD¿¨Çý¶¯³ÌÐò±àÒëµ½LinuxÄÚºËÖУ¿ÃèÊöÒ»ÏÂÏêϸ²½Öè¡£ mmc/SD card driver 1¡¢arch/arm/mach-s3c2440/mach£smdk2440.c platform½á¹¹ÖÐÔö¼Ó&s3c_device_sdiÓï¾ä¡£ static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_usb, &s3c_device_lcd, &s3c_device_wdt, &s3c_device_i2c, &s3c_device_iis, &s3c_device_nand, &s3c_device_sdi, //add here }; ÔÚmake menuconfigʱѡÉÏËùÓйØÓÚsd¿¨µÄÐÅÏ¢£¬ÒªÏëÖ§³ÖÖÐÎÄ»¹µÃÑ¡ÉÏ£º Device Drivers ---> <*> MMC/SD/SDIO card support ---> --- MMC/SD/SDIO card support [ ] MMC debugging [ ] Allow unsafe resume (DANGEROUS) *** MMC/SD/SDIO Card Drivers *** <*> MMC block device driver [*] Use bounce buffer for simple hosts < > SDIO UART/GPS class support < > MMC host test driver *** MMC/SD/SDIO Host Controller Drivers *** < > Secure Digital Host Controller Interface support < > MMC/SD/SDIO over SPI <*> Samsung S3C SD/MMC Card Interface support File system--¡· DOS/FAT/NT Filesystems--¡· VFAT£¨Windows-95£©fs support £¨437£©Default codepage for F£Á£Ô **°Ñ437¸ÄΪ936 Native language support --> [*]Simplified Chinese charset [*]NLS UTF-8 ÕâÑù¾Í¿ÉÖ±½Ó¹ÒÔØÁË mount -t vfat /dev/mmcblk0 /mnt Èç¹ûsd¿¨·ÖÇøÁË mount -t vfat /dev/mmcblk0p1 /mnt Ö±½Ó¶Áдsd¾Í¿ÉÒÔÁË 2¡¢°®ÆÕ°å×ÓSD¿¨ÉÙ½ÓÁ½¸ùÒý½Å£¬·Ö±ðÊǼì²âSD¿¨²å°ÎµÄÖжÏÒý½ÅºÍSD¿¨Ð´±£»¤µÄÒý ½ÅËùÒÔ²åÉÏSD¿¨ºóÒªÖØÆô²ÅÄÜÆð×÷Óà 9. ÄãÊÇÔõÑùÀí½âLinuxÄÚºËÅäÖñàÒë»úÖÆµÄ£¿ 10. LinuxÄÚºËÔ´Âë¸÷¸ö×ÓĿ¼·Ö±ð°üº¬ÄÄЩÄÚÈÝ£¿ LinuxÄÚºËÔ´´úÂëÖ÷Òª°üº¬ÒÔÏÂ×ÓĿ¼£º 1.arch ÓëÌåϵ½á¹¹Ïà¹ØµÄ´úÂë¡£¶ÔÓ¦ÓÚÿ¸öÖ§³ÖµÄÌåϵ½á¹¹£¬ÓÐÒ»¸öÏàÓ¦µÄ×ÓĿ¼Èçi386¡¢armµÈÓëÖ®¶ÔÓ¦£¬ÏàӦĿ¼ÏÂÓжÔÓ¦µÄоƬÓëÖ®¶ÔÓ¦ 2.drivers É豸Çý¶¯´úÂ룬ռÕû¸öÄں˴úÂëÁ¿µÄÒ»°ëÒÔÉÏ ÀïÃæµÄÿ¸ö×ÓĿ¼¶ÔÓ¦Ò»ÀàÇý¶¯³ÌÐò£¬Èç: block:¿éÉ豸¡¢char:×Ö·ûÉ豸¡¢mtd:´æ´¢ÀàÉ豸µÈ 3.fs Îļþϵͳ´úÂ룬ÿ¸öÖ§³ÖµÄÎļþϵͳÓÐÏàÓ¦µÄ×ÓĿ¼£¬Èçcramfs,yaffs£¬jffs2µÈ 4.include ÕâÀï°üÀ¨±àÒëÄÚºËËùÐèµÄ´ó²¿·ÖÍ·Îļþ ÓëÆ½Ì¨Î޹صÄÍ·Îļþ·ÅÔÚinclude/linux×ÓĿ¼Ï ¸÷ÀàÇý¶¯»ò¹¦Äܲ¿¼þµÄÍ·Îļþ£¨/media¡¢/mtd¡¢/netµÈ£© ÓëÆ½Ì¨Ïà¹ØµÄÍ·Îļþ/asm-arm¡¢/asm-i386µÈ 5.lib ÓëÌåϵ½á¹¹Î޹صÄÄں˿â´úÂë ÓëÌåϵ½á¹¹Ïà¹ØµÄÄں˿â´úÂëÔÚ/usr/*/libÏ 6.init Äں˳õʼ»¯´úÂë,ÆäÖеÄmain.cÖеÄstart_kernelº¯ÊýÊÇϵͳÒýµ¼ÆðÀ´ºóÔËÐеĵÚ1¸öº¯Êý£¬ÕâÊÇÑо¿Äں˿ªÊ¼¹¤×÷µÄÆðµã 7.ipc Äں˽ø³Ì¼äͨÐÅ´úÂë 8.mm ÓëÌåϵ½á¹¹Î޹صÄÄÚ´æ¹ÜÀí´úÂë Óë´¦ÀíÆ÷Ìåϵ½á¹¹Ïà¹ØµÄ´úÂëÔÚ/usr/*/mmÏ 9.kernel Äں˹ÜÀíµÄºËÐÄ´úÂë 10.net ÍøÂ粿·Ö´úÂ룬Æäÿ¸öĿ¼¶ÔÓ¦ÓÚÍøÂçµÄÒ»¸ö·½Ãæ 11.scripts ´æ·ÅһЩ½Å±¾Îļþ£¬ÀýÈçÅäÖÃÄÚºËʱÓõ½µÄmake menuconfigÃüÁî 12.Documentation ÄÚºËÏà¹ØÎĵµ 13.Crypto ³£ÓüÓÃܼ°É¢ÁÐËã·¨£¬ºÍһЩѹËõ¼°CRCУÑéËã·¨ 11. Ö´ÐÐmake menuconfigÅäÖÃÍêLinuxÄں˺󣬻áÉú³ÉÁ½¸öÎļþ.configºÍ include/autoconf.h£¬ËüÃÇ·Ö±ðÊÇʲô×÷Óã¿ 12. ʲôÊǸùÎļþϵͳ£¬ÄãÊÇÔõÑùÀí½âÕâÒ»¸ÅÄîµÄ£¿ ¸ùÎļþϵͳÓɸ÷¸öĿ¼×é³É£¬ÆäËüĿ¼ÉϵÄËùÓÐĿ¼¡¢ÎļþµÄ¼¯ºÏ£¬Ò²³ÉΪÆÕͨÎļþϵͳ(Äں˾µÏñÎļþ¡¢ÄÚºËÆô¶¯ºóÔËÐеĵÚÒ»¸ö³ÌÐò£¨init£©¡¢¸øÓû§Ìṩ²Ù×÷½çÃæµÄshell³ÌÐò£¬Ó¦ÓóÌÐòËùÒÀÀµµÄ¿âµÈ)¡£ 13. ÔõÑùÖÆ×÷Ò»¸öcramfs¸ñʽµÄ¸ùÎļþϵͳ£¿ÃèÊöÒ»ÏÂÏêϸ¹ý³Ì¡£ ʹÓÃBusybox-1.16.1ÖÆ×÷¸ùÎļþϵͳ ½»²æ±àÒëÆ÷£ºarm-linux-4.3.2 Ò»¡¢ STEP 1 ´´½¨¸ùĿ¼£º ÔÚhomeĿ¼Ï´´½¨/home/rootfsÎļþ¼Ð£¬ÓÃ×÷й¹½¨µÄ¸ùÎļþϵͳµÄ¸ùĿ¼ #cd /home #mkdir rootfs ´´½¨¸ùÎļþϵͳĿ¼£¬Ö÷Òª°üÀ¨ÒÔÏÂĿ¼ /dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin sys #mkdir dev etc lib usr var proc tmp home root mnt bin sbin sys ¶þ¡¢ STEP 2 ¹¹½¨ /bin¡¢/sbin¡¢linuxrc£º ½âѹ²¢½øÈëbusybox-1.16.1Ŀ¼£¬Ö´ÐÐ # make defconfig # make menuconfig Busybox Setting -----> Build Options -----> [*]Build BusyBox as a static binary (no shared libs) \\\\¾²Ì¬±àÒëbusybox Ö¸¶¨½»²æ±àÒëÆ÷Ϊ (/usr/local/arm/4.3.2/bin/arm-linux-)Cross Compiler prefix Installation Options -----> Ñ¡ÔñÉÏ Don¡¯t use /usr Busybox Library Tuning---> [*]Username completion [*]Fancy shell prompts [*]Query cursor position from terminal ±àÒë³öµÄbusyboxµÄshellÃüÁî½âÊÍÆ÷Ö§³ÖÏÔʾµ±Ç°Â·¾¶¼°Ö÷»úÐÅÏ¢ ±£´æÍ˳ö # make # make install ÔÚbusyboxĿ¼Ï»ῴ¼û _installĿ¼£¬ÀïÃæÓÐ/bin /sbin /usr linuxrcÈý¸öÎļþ (cp ¸´ÖÆÊ±¼Ó²ÎÊý-a)½«ÕâËĸöĿ¼»òÎļþ¿½µ½µÚÒ»²½Ëù½¨µÄrootfsÎļþ¼ÐÏ¡£ Èý¡¢ STEP 3 ¹¹½¨etcĿ¼£º ½øÈë¸ùÎļþϵͳrootfsµÄetcĿ¼£¬Ö´ÐÐÈçϲÙ×÷£º #cd /home/rootfs/etc ¿½±´Busybox-1.2.0/examples/bootfloopy/etc/* µ½µ±Ç°Ä¿Â¼Ï # cp ¨Cr busybox-1.16.1/examples/bootfloopy/etc/* rootfs/etc inittab¡¢fstab¡¢profile¡¢init.d/rcS 1. inittab£º ÓÃÀ´×÷ΪlinuxrcµÄ½âÊͽű¾ 2. init.d/rcS£º inittabÆô¶¯µÄµÚÒ»¸ö½Å±¾£¬Ò»°ãÓÃÀ´¹ÒÔØÏµÍ³±ØÐèµÄÎļþϵͳ¡¢±ØÒªµÄÉ豸Á¬½Ó¡¢ÉèÖÃIPµØÖ·¡¢Æô¶¯ÆäËû½Å±¾µÈ,ĬÈϽöÓÐmount ¨Ca 3. fstab£º Ö´ÐÐmount ¨Caʱ£¬°´ÕÕ´ËÎļþ¹ÒÔØÎļþϵͳ 4. profile£ºµÇ½Íêshellºó×Ô¶¯Ö´Ðд˽ű¾£¬Ò»°ãÓÃÀ´ÉèÖÃÐèÒªµÄ»·¾³±äÁ¿ 1) ÐÞ¸Äinittab °ÑµÚ¶þÏî¸ÄΪ::respawn:-/bin/login °ÑµÚÈýÐÐtty2::askfirst:-/bin/sh ÆÁ±Îµô 2) ¿½±´ÐéÄâ»úÉϵÄ/etc/passwd, /etc/group, /etc/shadowµ½rootfs/etc Ï¡£ # cp /etc/passwd rootfs/etc # cp /etc/group rootfs/etc # cp /etc/shadow roofs/etc ¶ÔÒÔÉÏÈý¸öÎļþÐ޸ģ¬Ö»±£´æÓërootÏà¹ØµÄÏ¸ù¾Ý¾ßÌåÇé¿öÄÚÈÝ»áÓÐËù²»Í¬¡£ ÐÞ¸ÄpasswdΪroot:x:0:0:root:/root:/bin/sh£¬¼´Ö»±£´æÓërootÏà¹ØÏ¶øÇÒ×îºó¸Ä³É/bin/ash ÐÞ¸ÄgroupΪroot:x:0:root ÐÞ¸ÄshadowΪroot:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7::: £¨×¢ÒâÕâ¸öÖµ²»Ò»¶¨Ò»Ñù£¬¸÷ÈËÃÜÂë²»Ò»Ñù£¬Õâ¸öÖµÒ²²»Ò»Ñù£© µÇ½¿ª·¢°åʱÐèÊäÈëÓû§ÃûÃÜÂ룬ͬÐéÄâ»úÏàͬ ¿ÉÒÔͨ¹ý passwdÃüÁîÐÞ¸ÄÃÜÂë »òͨ¹ýadduserÔö¼ÓÐÂÓû§ 3) ÐÞ¸Äprofile PATH=/bin:/sbin:/usr/bin:/usr/sbin Á¿ export LD_LIBRARY_PATH=/lib:/usr/lib Á¿ /bin/hostname sunplusedu USER=\LOGNAME=$USER HOSTNAME='/bin/hostname' PS1='[\%u@\\h \\W]# ' ÏÔʾÖ÷»úÃû¡¢µ±Ç°Â·¾¶µÈÐÅÏ¢£º \\\\¿ÉÖ´ÐгÌÐò »·¾³±ä\\\\¶¯Ì¬Á´½Ó¿â »·¾³±ä 4) ÐÞ¸Ä etc/init.d/rc.SÎļþ (×¢Òâmount ¨Ca ÔÚÏÂÃæ) /bin/mount -n ¨Ct ramfs ramfs /var /bin/mount -n -t ramfs ramfs /tmp /bin/mount -n -t sysfs none /sys /bin/mount -n -t ramfs none /dev /bin/mkdir /var/tmp /bin/mkdir /var/modules /bin/mkdir /var/run /bin/mkdir /var/log /bin/mkdir -p /dev/pts /bin/mkdir -p /dev/shm /sbin/mdev -s /bin/mount -a echo /sbin/mdev > /proc/sys/kernel/hotplug 5) ÐÞ¸Äetc/fstabÎļþ£¬Ôö¼ÓÒÔÏÂÎļþ none /dev/pts devpts mode=0622 0 0 tmpfs /dev/shm tmpfs defaults 0 0 ËÄ¡¢ STEP 4 ¹¹½¨libĿ¼£º ½øÈë /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/libĿ¼ ½«ÒÔ϶¯Ì¬¿â¿½±´µ½rootfs/libÏ #cp *so* roofs/lib -a ½øÈëÒÔÏÂĿ¼ /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib ½«ÒÔ϶¯Ì¬¿â¿½±´µ½rootfs/libÏ #cp ./libstdc++.so.* rootfs/lib -a Îå¡¢ ʹÓÃnfs¹ÒÔØÑéÖ¤ ÐÞ¸ÄviviÆô¶¯²ÎÊý£¬´ÓÐéÄâ»úÉÏÆô¶¯¸ùÎļþϵͳ£º param set linux_cmd_line \ÐÞ¸ÄΪʵ¼ÊµÄĿ¼),rsize=1024,wsize=1024 ip=192.168.220.11(¿ª·¢°åµØÖ·¿ÉÒÔËæ±ãÌî):192.168.220.xx(ÐéÄâ»úµÄµØ Ö·):192.168.220.254:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0¡° »òÐÞ¸Äu-bootµÄ²ÎÊý£º setenv bootargs ¡®noinitrd root=/dev/nfs nfsroot=/home/rootfs/(ÐÞ¸ÄΪʵ¼ÊµÄĿ¼),rsize=1024,wsize=1024 ip=192.168.220.11(¿ª·¢°åµØÖ·¿ÉÒÔËæ±ãÌî):192.168.220.xx(ÐéÄâ»úµÄµØ Ö·):192.168.220.254:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0¡¯ ×¢Ò⣺viviÐ޸IJÎÊýʹÓÃË«ÒýºÅ£¬u-bootʹÓõ¥ÒýºÅ Áù¡¢ SETP5ÏÂÔØÑéÖ¤ ¾¹ýÒÔÉϼ¸²½£¬Ò»¸ö×î»ù±¾µÄlinux¸ùÎļþϵͳÒÑ¾ÖÆ×÷Íê±Ï ¿ÉÒÔ½«ÖÆ×÷ºÃµÄ¸ùÎļþϵͳͨ¹ýnfs¡¢cramfs¡¢yaffs¹¤¾ß½øÐÐÑéÖ¤ 1£©CRAMFS¹¤¾ß°üÖ÷ÒªÓÐÁ½¸ö¹¤¾ß£¬·Ö±ðÊÇmkcramfsºÍcramfsck mkcramfs¹¤¾ßÓÃÀ´´´½¨CRAMFSÎļþϵͳ # mkcramfs dirname outfile cramfsck¹¤¾ßÓÃÀ´½øÐÐCRAMFSÎļþϵͳµÄÊͷźͼì²é # cramfsck file -x dir 2)Yaffs¹¤¾ß°üyaffs.tar.gzµÄʹÓ㺠#tar zxvf yaffs.tar.gz #cd yaffs; #cd untils #make //»á²úÉúmkyaffsimage ÓÃmkyaffsimageÖÆ×÷yaffsÎļþϵͳ¾µÏñ£º #mkyaffsimage usr usr.yaffs