ǶÈëʽÈí¼þ¹¤³Ìʦ×ۺϲâÊÔÊÔÌâ´ð°¸ ÏÂÔØ±¾ÎÄ

×ۺϸ´Ï°ÊÔÌâ

µÚÒ»²¿·Ö£º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 ºÍ #include ¡°filename.h¡± ÓÐÊ²Ã´Çø±ð£¿ ´ð£º¶ÔÓÚ#include £¬±àÒëÆ÷´Ó±ê×¼¿â·¾¶¿ªÊ¼ËÑË÷ filename.h ¶ÔÓÚ#include ¡°filename.h¡± £¬±àÒëÆ÷´ÓÓû§µÄ¹¤×÷·¾¶¿ªÊ¼ËÑË÷

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;ja[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 £º+C C £ºshut down D£º halt £¨3£©Äں˲»°üÀ¨µÄ×ÓϵͳÊÇ( C )¡£

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 #include #include #include #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 #include #include #include #include #include #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 #include #include

#include #include #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

#include #include #include #include #include #include #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 // bzero #include #include #include

#include // inet_ntop #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 #include #include #include #include #include #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 #include #include #include #include #include #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