????????linux???????????????

????1??Linux??????????????????

????2??Linux?е??????????????????????

????3????????????????????????

????4??????????????亯???

?????????棺??????????????????????????????

???????????????

?????????log??????£?????????Σ?time(???????????)+uid+login??logout???????????????????С????????£????????????T???????????????

???????????ο????????http://blog.csdn.net/tnndye/article/details/12784237??

????10??8?????????????-????????/??????

????1????????????????????????????????????????????????????????????012??????????????????????顣

???????????????????????μ??????8С???http://blog.csdn.net/v_july_v/article/details/6211155??

????2?????C??strstr

????????????д??????????????????????м????????????????

????????????????str1?в?????????????str2??

????-????У???str1?е?str2λ????????str1??str2???λ???????????У?????null??

??????????ο??????????C????

????[cpp] view plaincopyprint?

????char *mystrstr(char *s1 ?? char *s2)

????{

????if(*s1==0)

????{

????if(*s2)

????return(char*)NULL;

????return (char*)s1;

????}

????while(*s1)

????{

????int i=0;

????while(1)

????{

????if(s2[i]==0)

????return s1;

????if(s2[i]!=s1[i])

????break;

????i++;

????}

????s1++;

????}

????return (char*)NULL;

????}

????char *mystrstr(char *s1 ?? char *s2)

????{

????if(*s1==0)

????{

????if(*s2)

????return(char*)NULL;

????return (char*)s1;

????}

????while(*s1)

????{

????int i=0;

????while(1)

????{

????if(s2[i]==0)

????return s1;

????if(s2[i]!=s1[i])

????break;

????i++;

????}

????s1++;

????}

????return (char*)NULL;

????}