|
£Ïȶ¨8GFLinuxÁªÃË Î»ÊÇÈí¼þÎÊÌ⻹ÊÇÓ²¼þÎÊÌ⣺ÕÒÒ»¸öÒ»°ãµÄHUB£¬°ÑËĸù¹«ÍøÍøÏß¶¼½Óµ½HUB8GFLinuxÁªÃË £¨×îºÃÊÇûÈκÎÖÇÄܵÄDumb Hub£©ÉÏ£¬¿´ÊÇ·ñ»¹ÓÐÎÊÌ⣻Èç¹û»¹ÓÐÎÊÌ⣬¾ÍÊÇ8GFLinuxÁªÃË Èí¼þÎÊÌ⣬¿ÉÄÜÊÇÄãûÓаѲ¹¶¡´òÈ«£¬Çëµ½SUNÁªºÏʵÑéÊÒµÄÍøÕ¾¡ª¡ª8GFLinuxÁªÃË SUNLIBRARYÉÏÏÂÔØPATCH£»Èç¹ûûÓÐÎÊÌ⣬±íÃ÷ÊÇÓ²¼þÎÊÌ⣬¿ÉÄÜÊÇSWITCH²»8GFLinuxÁªÃË Îȶ¨£¬ÒÔǰÓÐÏÖÏ󱨸滪ΪµÄ2403 Switch³öÏÖ¹ý£»CiscoµÄSwitchÓ¦¸ÃûÎÊÌâ8GFLinuxÁªÃË ¡£Êµ¼ÊÉÏ£¬¿ÉÒÔÄ£Äâ²âÊÔ¹ý³Ì£º8GFLinuxÁªÃË 1. 2278GFLinuxÁªÃË # ifconfig plumb hme18GFLinuxÁªÃË # ifconfig hme1 inet ip1 ... (ÅäÖÃIP)8GFLinuxÁªÃË 2. 2288GFLinuxÁªÃË # ifconfig plumb hme18GFLinuxÁªÃË # ifconfig hme1 inet ip2 ...8GFLinuxÁªÃË 3. 2278GFLinuxÁªÃË # ping ip28GFLinuxÁªÃË 4. 2288GFLinuxÁªÃË # ping ip18GFLinuxÁªÃË Notes: ip1, ip2 Ó¦ÔÚͬһ×ÓÍø¡£8GFLinuxÁªÃË 8GFLinuxÁªÃË 137 Q: ÉÏ´ÎÓÉÓÚÍ£µç,¹¤×÷վͻȻ¹Ø»ú,ÖØÐÂÆô¶¯,ÔÚÊäÈëÓû§ÃûºÍÃÜÂëºó,½ø²»È¥,Ò»8GFLinuxÁªÃË Ö±Í£ÁôÔÚÊäÈëÓû§ÃûµÄ½çÃæ,°´ctrl-dûÓз´Ó¦,ÇëÎÊÈçºÎ½â¾ö?8GFLinuxÁªÃË A£ºÊǼÒĿ¼ÖÐµÄ .dt/sessions ÓÐÎÊÌâ, ɾµôÊÔÒ»ÏÂ.8GFLinuxÁªÃË 8GFLinuxÁªÃË 138 Q: solarisÖÐÈ´Ê¡µÄ¹²ÏíÄÚ´æÎª¶àÉÙ£¿¼´Èç¹û²»ÔÙ/etc/systemϵ¥¶ÀÉèÖõϰ¡£8GFLinuxÁªÃË A£º1M8GFLinuxÁªÃË 8GFLinuxÁªÃË 139 Q: ÔÚSOLARISÏ£¬ÀûÓÃct library½øÐÐSYBASEÊý¾Ý¿â±à³Ì£¬°üº¬ÁËÍ·Îļþ8GFLinuxÁªÃË ctpublic.h,±àÒëʱ±¨¸æÕÒ²»µ½sqlda.hÎļþ(°üº¬ÔÚctpublic.hÖÐ),ÄÜ·ñÌṩ8GFLinuxÁªÃË Ò»¸ösqlda.h »òÓÐÆäËüʲô½â¾ö°ì·¨?8GFLinuxÁªÃË A£ºÕâ¸öÎļþÊÇÒ»¸ö»ù±¾Îļþ,Äã»úÆ÷ÉϿ϶¨ÒѾÓÐÁË,ÕÒ³öÀ´,È»ºó°ÑËüÓà -L Ñ¡8GFLinuxÁªÃË Ïî¼ÓÉÏ.8GFLinuxÁªÃË 8GFLinuxÁªÃË 140 Q: ¹âÇý·ÅÈë¹âÅ̺ó£¬È¡²»³öÅÌ£¬ÓÃejectÃüÁîÊÇÏÔʾ£º¡±8GFLinuxÁªÃË /vol/dev/rdsk/c0t0d0/sybasecd£ºÉ豸桱µÄÌáʾ£®ÎҼǵÿÉÒÔÓÃÃüÁÆä8GFLinuxÁªÃË Í£µô£¬ÇëÎÊÈçºÎ²Ù×÷£¿8GFLinuxÁªÃË A£º/etc/rc2.d/S92volmgt stop8GFLinuxÁªÃË /etc/rc2.d/S92volmgt start 141 Q: ÎÒÃÇÏÖÔÚÖÆ×÷°²×°°üµÄʱºò,ʹÓÃpkgmkÉú³ÉµÄ°üÒ»°ãÉ϶¼ÊÇÒ»¸öĿ¼µ«ÊÇͨ¹ý8GFLinuxÁªÃË Ò»ÖÖ·½·¨Éú³ÉµÄÊÇÒ»¸ö.pkgÎļþµÄµ¥¶ÀÎļþ£¨²ÂÏë¿ÉÄÜÊÇʹÓÃÁËpkgtrans»òÆä8GFLinuxÁªÃË ËüµÄ³ÌÐò£©ÇëÎÊÄãÖªµÀÈçºÎÉú³É.pkgÎļþÎÒÏ£ÍûÄܹ»»¹Ô.pkg°²×°°ü³ÉΪһ¸ö8GFLinuxÁªÃË Ä¿Â¼£¬ÇëÎÊ¿ÉÒÔÂð£¿Èç¹û¿ÉÒÔ£¬¸ÃÈçºÎ½øÐÐÄØ£¿8GFLinuxÁªÃË A: ¿ÉÒÔÓÃpkgtransת»»¡£8GFLinuxÁªÃË 8GFLinuxÁªÃË 142 Q: ÇëÎÊÔÚSOLARIS2.6»·¾³ÏÂÓÃʲôÃüÁîÀ´¼àÊÓÄÚ´æµÄʹÓÃÇé¿ö¡£ÀýÈçHPÊÇʹÓÃ8GFLinuxÁªÃË topÃüÁîµÄ£¬¿ÉÊÇSOLARIS 2.6ûÓÐÕâ¸öÃüÁî¡£8GFLinuxÁªÃË A: download it from sunfreeware.com8GFLinuxÁªÃË 8GFLinuxÁªÃË 143 Q: ÇëÎÊUNIXϵļ¸ÖÖSHELL ksh,csh,shÓÐʲôÃ÷ÏÔµÄÇø±ð£¿ÄÇÒ»¸ö×îͨÓ𡣿8GFLinuxÁªÃË A: sh ÊÇ×î¹ÅÀÏÒ²ÊÇ×î»ù±¾µÄshell£¬csh ÊÇ Sun ¹«Ë¾ µÄ Bill Joy ·¢Ã÷µÄ£¬ÓÉ8GFLinuxÁªÃË ÓÚÔö¼ÓÁËhistory µÈ¹¦ÄܺÍÀàËÆ C ÓïÑԵĽű¾´¦Àí¶ø´óÊÜ»¶Ó£¬ÒÔÉÏʹÓõÄ8GFLinuxÁªÃË ×î¶àµÄÁ½ÖÖshell£¬ksh ÓÉÓÚÆäÇ¿¾¢µÄ±à³ÌÄÜÁ¦¶øÊܵ½»¶Ó£¬Ò²ÓнϹ㷺µÄÓ¦8GFLinuxÁªÃË ÓÃ8GFLinuxÁªÃË 8GFLinuxÁªÃË 144 Q: Sun NetraT 1120,solaris 2.7ÌṩµÄSNMP AgentÌØÐÔ£¬Ê¹ÄܶÔÄÄÐ©ÌØÐÔÓë·þ8GFLinuxÁªÃË ÎñÌṩ¹ÜÀí½Ó¿Ú?8GFLinuxÁªÃË A: Solaris ÄÚÖÃµÄ snmp agent ³ÆÎª solstice enterprise agent£¨SEA£©£¬8GFLinuxÁªÃË Sun µÄ¹ÜÀí½Ó¿Ú£º Desktop management interface£¨ DMI£©¡£ÓÐרÃŵĿª·¢8GFLinuxÁªÃË °ü¡£8GFLinuxÁªÃË 8GFLinuxÁªÃË 145 Q: ÎÒдÁËÒ»¸ö¶àÏ̵߳ijÌÐò£¬8GFLinuxÁªÃË ÔÚmain()º¯ÊýµÄ³õʼ²¿·Öµ÷ÓÃÁËÈçÏ´úÂ뽫×ÓÏ̵߳ÄÐźŴ¦ÀíÆÁ±Î£º8GFLinuxÁªÃË sigemptyset(&mySigset);8GFLinuxÁªÃË for(i=1;i<=36; i++)8GFLinuxÁªÃË { //¶Ô×ÓÏß³ÌÆÁ±ÎËùÓÐÐźÅ8GFLinuxÁªÃË sigaddset(&mySigset, i);8GFLinuxÁªÃË }8GFLinuxÁªÃË pthread_sigmask(SIG_BLOCK, &mySigset, NULL);8GFLinuxÁªÃË //´´½¨ÐźŴ¦ÀíÏß³Ì8GFLinuxÁªÃË if(pthread_create(&user_threadID, NULL, SigCatcher, NULL)==0)8GFLinuxÁªÃË ÐźŴ¦ÀíÏß³ÌרߺÔð½ÓÊÕÐźţ¬ÈçÏ£º8GFLinuxÁªÃË void *SigCatcher(void *pIn)8GFLinuxÁªÃË {8GFLinuxÁªÃË int signal,i;8GFLinuxÁªÃË sigset_t mySigset;8GFLinuxÁªÃË sigemptyset(&mySigset);8GFLinuxÁªÃË for(i=1;i<=36; i++)8GFLinuxÁªÃË { //½ÓÊÕËùÓÐÐźÅ8GFLinuxÁªÃË sigaddset(&mySigset, i);8GFLinuxÁªÃË }8GFLinuxÁªÃË for( ; ; )8GFLinuxÁªÃË {8GFLinuxÁªÃË if(sigwait(&mySigset, &signal)==0)8GFLinuxÁªÃË {8GFLinuxÁªÃË SignalHandler(signal);8GFLinuxÁªÃË }8GFLinuxÁªÃË }8GFLinuxÁªÃË }8GFLinuxÁªÃË ÀíÂÛÉϴ˺󴴽¨µÄеÄÏ̲߳»Ó¦¸Ã½ÓÊÕµ½Òì²½Ðźš£µ«ÊÇÔÚ²âÊÔʱ·¢ÏÖ£¬Ä³¸öÏ̵߳÷8GFLinuxÁªÃË ÓÃselect()ϵͳµ÷ÓÃʱ£¬ÈԻᱻÐźÅÖжϡ£´úÂëÈçÏ£º8GFLinuxÁªÃË iRet = select (0, NULL, NULL, NULL, &rDelayTime);8GFLinuxÁªÃË if(iRet < 0 && errno == EINTR)8GFLinuxÁªÃË { //±¾Ï̱߳»Òì²½ÐźÅÖжÏ8GFLinuxÁªÃË LogInfo(0, "%s:%d: ½ÓÊÕµ½ÐźÅ,ÖжÏselectµÈ´ý !n",__FILE__,__LINE__);8GFLinuxÁªÃË 8GFLinuxÁªÃË perror("this is the error code!n");8GFLinuxÁªÃË return FALSE;8GFLinuxÁªÃË }8GFLinuxÁªÃË 8GFLinuxÁªÃË µ¼Ö³ÌÐòÖг¬Ê±Åжϲ»×¼¡£²éÁ˺ü¸Ì죬δÄܲé³öÊǺÎÔÒòÔì³É´ËÏÖÏó¡£Çë°ïÖú·ÖÎö8GFLinuxÁªÃË £¬Ê²÷áÇé¿öϸÃselect()µ÷ÓÃÈԻᱻÐźÅÖжϣ¬ÈçºÎÈ·¶¨ÊDZ»Ê²÷áÐźÅÖжϵģ¬ÓÐÎÞ8GFLinuxÁªÃË ·½·¨ÆÁ±Î¡£8GFLinuxÁªÃË 8GFLinuxÁªÃË A: µ÷ sigwait ֮ǰ£¬Ó¦µ±µ÷Óà pthread_sigmask£¬ ¿´ÏÂÃæÕâÒ»¶Î£º8GFLinuxÁªÃË sigset_t s;8GFLinuxÁªÃË sigfillset(&s);8GFLinuxÁªÃË pthread_sigmask(SIG_BLOCK, &s, NULL); /* Take no interrupts */8GFLinuxÁªÃË sigemptyset (&s);8GFLinuxÁªÃË sigaddset (&s, SIGINT);8GFLinuxÁªÃË sigaddset (&s, SIGTSTP);8GFLinuxÁªÃË sigaddset (&s, SIGQUIT);8GFLinuxÁªÃË sigaddset (&s, SIGHUP);8GFLinuxÁªÃË /* User program waits for everything EXCEPT USR1 and ALRM */8GFLinuxÁªÃË while(1)8GFLinuxÁªÃË {err = sigwait(&s, &sig);8GFLinuxÁªÃË 8GFLinuxÁªÃË 146 Q: ÇëÎÊUltraSparc оƬÖмĴæÆ÷ÊÇ32λ»¹ÊÇ64λ£¿8GFLinuxÁªÃË A£º°´ÕÕ SparcV9 Ìåϵ¹æ·¶£¬ÕûÊý¼Ä´æÆ÷£¨r[1]¡£¡£¡£¡£¡££©ÊÇ64λµÄ£¬¸¡µã¼Ä8GFLinuxÁªÃË ´æÆ÷ÔòÓÐ 32¸ö ÊÇ 32λµÄ£¬£¨f[01]¡£¡£¡£f[31]£©£¬ÆäºóµÄ¼Ä´æÆ÷ÊÇ64λµÄ¡£8GFLinuxÁªÃË 8GFLinuxÁªÃË 147 Q: ÇëÎÊSolaris ÈçºÎ»½ÐÑͬ²½¶ÔÏó£¿8GFLinuxÁªÃË A£º¶ÔÓÚ»¥³âÁ¿ºÍÌõ¼þ±äÁ¿,Äں˵ϽÐÑ»úÖÆÊÇ: ½«ËùÓеȴýµÄÏ̶߳¼»½ÐÑ,(»½ÐÑ8GFLinuxÁªÃË µÄÒâ˼ÊÇ:8GFLinuxÁªÃË 1 ÊÍ·Åͬ²½¶ÔÏó,8GFLinuxÁªÃË 2. ÖÃÏß³ÌΪrunnable²¢ÔÚ¾ÍÐ÷¶ÓÁÐÖÐÅŶÓ. )8GFLinuxÁªÃË ¾ßÌåÄǸöÏß³ÌÄÜÊ×Ïȵõ½´¦ÀíÆ÷,ÓÉÏß³ÌÓÅÏȼ¶¾ö¶¨,¶øÏß³ÉÓÅÏȼ¶ÔòÓÉʱ8GFLinuxÁªÃË ¼äƬºÍÏ̴߳´½¨Ê±Öƶ¨µÄµ÷Õû²ßÂÔ¿ØÖÆ)8GFLinuxÁªÃË 8GFLinuxÁªÃË 148 Q: ΪʲôcpioÃüÁîºó£¬³öÏÖÒÔÏÂÌáʾÐÅÏ¢£¿8GFLinuxÁªÃË %cpio -civt < /dev/rmt/08GFLinuxÁªÃË end of medium on input.to continue,8GFLinuxÁªÃË type /device/file name when ready.8GFLinuxÁªÃË A: cpio µÄ -i Ñ¡Ïî´¦ÀíµÄÊDZê×¼ÊäÈ룬 ËùÒÔÒ»°ãÕâÑùÓãº8GFLinuxÁªÃË cat /file | cpio -icd¡£¡£¡£¡£¡£¡£¡£¡£¡£8GFLinuxÁªÃË »òÕß ¾õµÃÕâÑù²»Ë¬ £¬Ò²¿ÉÒÔÕâÑù £º cpio -icdI /file8GFLinuxÁªÃË 8GFLinuxÁªÃË 149 Q: ²»ÖªµÀasn.1ÔÚ2.7ÏÂÊÇ·ñ¿ÉÒÔʹÓã¿ÎÒÌý˵ÔÚ2.7²»ÄÜʹÓã¬ÔÚ2.6ºÍ2.8Ï¿É8GFLinuxÁªÃË ÒÔÓá£8GFLinuxÁªÃË A: ÏÖÔÚ²ÉÓÃDSET ʵÏÖ asn.1 £¬Õâ¸öÈí¼þһֱûÓÐ2.7 ºÍ2.8µÄ°æ±¾£¬Òò´Ë£¬Èç8GFLinuxÁªÃË ¹ûÊÇеĿª·¢£¬½¨ÒéʹÓÃÆäËû³§É̵ÄÈí¼þ£¬£¨Ò²ÓÐ×ÔÓÉÈí¼þ¿É¹©Ê¹Óã©ÓÐЩ²¿8GFLinuxÁªÃË ÃÅÒѾÔÚ¿¼ÂÇÓÃÆäËû²úÆ·Ìæ»»DSET8GFLinuxÁªÃË 8GFLinuxÁªÃË 150 Q: SolarisµÄÈí¼þin.namedÀ´Ô´ÓÚbind,ÇëÎÊ,ISC¿ª·¢µÄDNSÈí¼þBindÓаæÈ¨Âð?ÔÚ8GFLinuxÁªÃË ÉÌÒµÉÏÓÐʹÓõÄÏÞÖÆÂð?8GFLinuxÁªÃË A: ËüµÄʹÓÃÊÇÃâ·ÑµÄ£¬¼´Ê¹ÊÇÉÌÓã¬Ð޸ĴúÂëµÄÏÞÖÆÔò²»Ì«Çå³þ8GFLinuxÁªÃË 8GFLinuxÁªÃË 151 Q: ÇëÎÊÈçºÎÈÃÒ»¸ö½á¹¹°´Ò»×Ö½Ú¶ÔÆë£¿8GFLinuxÁªÃË A: ³ÌÐòÖÐÕâÑùд£º8GFLinuxÁªÃË #pragma pack(1)8GFLinuxÁªÃË ...8GFLinuxÁªÃË ...8GFLinuxÁªÃË #pragma pack()8GFLinuxÁªÃË ±àÒëʱÕâÑù£º8GFLinuxÁªÃË cc -misalign............8GFLinuxÁªÃË 8GFLinuxÁªÃË 152 Q: ÔÚsolarisÖУ¬ÓйØÖÐÎĵÄ×ÖÌåÌ«ÉÙÁË£¨ÌرðÊÇС×ÖÌ壩ÀýÈçËÎÌ壬½ö½öÓÐ8GFLinuxÁªÃË 14,16,18,22,26 Õ⼸ÖÖ¡£ÔÙСһЩµÄ×ÖÌå¾ÍûÓÐÁË¡£8GFLinuxÁªÃË A£ºSolaris ϵÄ×ÖÌåȷʵ²»¹»·á¸»,ºÃÏñÍøÉÏ¿ÉÒÔÏÂÔØµ½Ò»Ð©×ÖÌå,Èç¹ûÊÇ8GFLinuxÁªÃË TrueType ×ÖÌå,¾ÍÎÞËùν´óС, ÔÚ zh.GBK ÕâÖÖlocaleÏÂ,×ÖÌå¸ü·á¸»Ò»Ð©.8GFLinuxÁªÃË 8GFLinuxÁªÃË 153 Q: ÎÒ´ò¿ªÒ»¸ö¡°ÖÕ¶Ë¡±£¬ÓÃvi±à¼£¬ÔÚ²åÈëģʽºó£¬ÔÚij¸öʱ¼ä£¬ÏµÍ³»á½«Ò»Ð©8GFLinuxÁªÃË ÏµÍ³·´À¡ÐÅÏ¢²åÈëµ½µ±Ç°ÕýÔڱ༵ÄÎı¾ÖС£8GFLinuxÁªÃË A£ºvi ÖгöÏÖһЩÊä³ö,ÊÇÒòΪÕâ¸öÖÕ¶ËÓÐһЩºǫ́½ø³ÌÕýÔÚÖ´ÐÐ,½«Êä³öÏÔʾµ½8GFLinuxÁªÃË Á˵±Ç°ÖÕ¶Ë,Óà Ctrl+L ¾Í»Ö¸´Õý³£.8GFLinuxÁªÃË 8GFLinuxÁªÃË 154 Q: ÔÚsun¹¤×÷Õ¾ÉÏÔõôÓÃalias,±ÈÈçÔõô°ÑdirµÈͬÓÚls?8GFLinuxÁªÃË A£º.cshrc8GFLinuxÁªÃË alias dir 'ls -lF'8GFLinuxÁªÃË 8GFLinuxÁªÃË 155 Q: ÇëÎÊÈçºÎ½«Ö÷Ị̈߳¨main()º¯Êýµ÷Ó㩵ÄÊôÐÔÉèPTHREAD_SCOPE_SYSTEM?£¨°ó8GFLinuxÁªÃË ¶¨Ïß³Ì)ÎÒÔÚ°ïÖúÖÐÕÒ²»µ½¶ÔÓ¦µÄAPI£¬ÇëÖ¸½Ì£¬Ð»Ð»£¡8GFLinuxÁªÃË A: ²»¿ÉÒÔ.8GFLinuxÁªÃË 8GFLinuxÁªÃË 156 Q: ÇëÎÊÏ̵߳Äȱʡ¶ÑÕ»Óжà´ó?ÄÜ·ñÀ©´ó?8GFLinuxÁªÃË A: Ö÷Ïß³Ì×Ô¶¯À©´ó,Ï߳̿ⴴ½¨µÄÏß³Ìȱʡ¶ÑÕ»1M,¿ÉÒÔÈËΪÉèÖôóС,Çë²ÎÕÕ¸½8GFLinuxÁªÃË ¼þ.8GFLinuxÁªÃË 8GFLinuxÁªÃË 8GFLinuxÁªÃË 157 Q: ×Ó½ø³ÌÖÕֹʱ£¬¸¸½ø³Ì±ØÐëÒªÓÃwaitÀຯÊýÈ¡µÃÆä״̬£¬·ñÔò»á²úÉú½©Ê¬½ø³Ì8GFLinuxÁªÃË £¨×Ó½ø³Ì£©£¬ÎÒÓÃfork²úÉúÁ˼¸¸ö½ø³Ì£¬²âÊÔȷʵÈç´Ë¡£ÕâÖÖ˵·¨Ó¦¸Ãû´í°É8GFLinuxÁªÃË A: û´í8GFLinuxÁªÃË 8GFLinuxÁªÃË 158 Q: ÈôÓÃfork¼òµ¥µØ²úÉúÁ½¸ö½ø³Ì£¬ÇÒ¸¸½ø³ÌÏÈÖÕÖ¹£¬Ôò×Ó½ø³Ì»á³ÉΪ½©Ê¬½ø³ÌÂð8GFLinuxÁªÃË Àý£º if ((pid = fork()) ==0)8GFLinuxÁªÃË {8GFLinuxÁªÃË sleep(20);8GFLinuxÁªÃË exit(0);8GFLinuxÁªÃË }8GFLinuxÁªÃË 8GFLinuxÁªÃË exit(0);8GFLinuxÁªÃË ÊÂʵÉÏÎÒÓÃÉÏÃæÀý×Ó²âÊÔ£¬×Ó½ø³ÌûÓгÉΪ½©Ê¬½ø³Ì£¬Õâ¶ÔÇ¨ÒÆÎÊÌâÖнáÂÛÊÇ·ñ8GFLinuxÁªÃË ÓгåÍ»£¿8GFLinuxÁªÃË A: ¸¸½ø³ÌÍ˳ö,×Ó½ø³Ì±»init ½Ó¹Ü, ¸Ä½ø³Ì×Ô¶¯µ÷ÓÃwait.8GFLinuxÁªÃË 8GFLinuxÁªÃË 159 Q: ÈçºÎ½â¾öÈçϲúÉúµÄ½©Ê¬½ø³Ì£¿8GFLinuxÁªÃË Àý£º if ((pid =fork()) == 0)8GFLinuxÁªÃË { ...8GFLinuxÁªÃË if (-1 == execlp("subprocess","subprocess",(char *)0) )8GFLinuxÁªÃË //˵Ã÷£ºsubprocess½ø³ÌΪһ¸öËÀÑ»·½ø³Ì£¬Ö»Óз¢ÐźŲÅÄÜÍ˳ö£¬¹Ê¸¸½ø³Ì8GFLinuxÁªÃË ²¿·Ö²»ÄÜÓÃwait´¦Àí8GFLinuxÁªÃË {8GFLinuxÁªÃË kill(getppid(),SIGCHLD);8GFLinuxÁªÃË }8GFLinuxÁªÃË ...8GFLinuxÁªÃË }8GFLinuxÁªÃË ..... //¸¸½ø³ÌÄÚÈÝ8GFLinuxÁªÃË ÇëÎÊÕë¶ÔÕâÖÖÇé¿ö£¬ÈçºÎ´¦Àí½©Ê¬½ø³Ì£¿³ýÁËwaitÀຯÊýÍ⣬»¹ÓÐʲô°ì·¨ÄØ£¿8GFLinuxÁªÃË A: ·½·¨Ò» : ×Ó½ø³ÌÔÚÍ˳ö֮ǰÏò¸¸½ø³Ì·¢Ò»¸öÐźţ¬¸¸½ø³Ì½øÐÐwait¡£²»¹ýÕâ8GFLinuxÁªÃË ¿ÉÓзçÏÕ£¬ÒªÊÇ×Ó½ø³Ì²»Í˳ö£¬¹Ô¹Ô ..........8GFLinuxÁªÃË ·½·¨¶þ :Ö»ÒªºöÂÔµôSIGCHLDÐźż´¿É£¬¹Ê¿Éµ÷Óà sigignore(SIGCHLD),»òÓÃ8GFLinuxÁªÃË sigset,»òÓÃsigactionÖÐflagÖмÓÉÏSA_CLDWAIT±êÖ¾¼´¿É£¬µ±È»Êܲ»Í¬unix¶ø8GFLinuxÁªÃË ÏÞÖÆ£¬ÔÚsvr4ÖпÉÒÔ£¬µ«ÔÚ4.3+BSDÖÐÖ»ÓÐwaitµÈÁË¡£8GFLinuxÁªÃË ·½·¨Èý: ÏÂÃæÊǽ̿ÆÊéʽµÄ½â¾ö·½°¸,ÊDz»ÊǸücoolÒ»µã?8GFLinuxÁªÃË #include <sys/types.h>8GFLinuxÁªÃË #include <sys/wait.h>8GFLinuxÁªÃË #include "ourhdr.h"8GFLinuxÁªÃË int8GFLinuxÁªÃË main(void)8GFLinuxÁªÃË {8GFLinuxÁªÃË pid_t pid;8GFLinuxÁªÃË 8GFLinuxÁªÃË if ( (pid = fork()) < 0)8GFLinuxÁªÃË err_sys("fork error");8GFLinuxÁªÃË else if (pid == 0) { /* first child */8GFLinuxÁªÃË if ( (pid = fork()) < 0)8GFLinuxÁªÃË err_sys("fork error");8GFLinuxÁªÃË else if (pid > 0)8GFLinuxÁªÃË exit(0); /* parent from second fork == first ch8GFLinuxÁªÃË ild */8GFLinuxÁªÃË /* We're the second child; our parent becomes init as soon8GFLinuxÁªÃË as our real parent calls exit() in the statement above.8GFLinuxÁªÃË Here's where we'd continue executing, knowing that when8GFLinuxÁªÃË we're done, init will reap our status. */8GFLinuxÁªÃË sleep(2);8GFLinuxÁªÃË printf("second child, parent pid = %dn", getppid());8GFLinuxÁªÃË exit(0);8GFLinuxÁªÃË }8GFLinuxÁªÃË if (waitpid(pid, NULL, 0) != pid) /* wait for first child */8GFLinuxÁªÃË err_sys("waitpid error");8GFLinuxÁªÃË /* We're the parent (the original process); we continue executing,8GFLinuxÁªÃË knowing that we're not the parent of the second child. */8GFLinuxÁªÃË exit(0);8GFLinuxÁªÃË }8GFLinuxÁªÃË 8GFLinuxÁªÃË 160 Q: ĿǰÓöµ½Ò»¸öÑÏÖØµÄÐÔÄÜ·½ÃæµÄÎÊÌ⣬¾ßÌåÔÒòÈçÏ£ºÃ¿´¦ÀíÒ»¸öºô½ÐÐèÒª½¨8GFLinuxÁªÃË Á¢Á½¸öTCPÁ¬½Ó£¨Ö÷±»½Ð¸÷1£©£¬ÎÒÃÇÔ¶¨µÄ¹æ¸ñÊDZ£³Ö2400¸öºô½Ð£¬Ò²¾ÍÊDZ£8GFLinuxÁªÃË ³Ö4800¸öTCPÁ¬½Ó£¬ÎÒÃÇʹÓÃselectÀ´½ÓÊպͷ¢ËÍÊý¾Ý£¬Ò»´Î´¦ÀíËùÓеÄTCPÁ¬8GFLinuxÁªÃË ½Ó£¬Ã¿¸ô100ms selectËùÓеÄTCPÁ¬½ÓÒ»´Î£¬¿ÉÊÇÎÒÃÇ·¢ÏÖµ±TCPÊýÄ¿Ôö¶àʱ£¬8GFLinuxÁªÃË selectµÄʱ¼äҲѸËÙÔö¼Ó£¬²âÊÔ·¢ÏÖSelect 2000¸öTCPÁ¬½ÓµÄʱ¼äÐèÒª20ms,8GFLinuxÁªÃË ÕâÊǵ¼ÖÂϵͳÐÔÄܵĹؼü¡£ËùÓеÄsocketÒÑÈ«²¿Í¨¹ýÈçÏÂÓï¾äÉèÖóÉÁË·Ç×èÈû8GFLinuxÁªÃË ·½Ê½8GFLinuxÁªÃË arg = 1;8GFLinuxÁªÃË ioctl(sTemp, FIONBIO, &arg)8GFLinuxÁªÃË A: select ÊÇÓÉpoll ʵÏÖµÄ,ËùÒԱܿªselectµ÷ÓöøÖ±½ÓʹÓà poll »áÓÐÒ»¶¨µÄ8GFLinuxÁªÃË Ð§¹û.µ«ÏµÍ³¿ªÏúÖ÷Òª»¹ÊÇÓÉÓÚ Îļþ¾ä±ú¹ý¶àÒýÆðµÄ,ËùÒÔÌá¸ßϵͳÐÔÄÜ»¹Òª8GFLinuxÁªÃË Ïë±ðµÄ°ì·¨.Èç¹ûÓÐÊý¾ÝµÈ´ýµÄsocketÔÚËùÓÐsocketÖеıÈÀý²»ÊǺܴó,ÔòÓöà8GFLinuxÁªÃË Ïß³ÌÀ´½øÐе÷¶ÈÊǸüºÃµÄÑ¡Ôñ. 161 Q: ÓÉÓÚ3500¸öTCP SelectÒ»´ÎÐèÒª40msµÄʱ¼ä£
LinuxÁªÃËÊÕ¼¯ÕûÀí ,תÌùÇë±êÃ÷ÔʼÁ´½Ó,ÈçÓÐÈκÎÒÉÎÊ»¶ÓÀ´±¾Õ¾LinuxÂÛ̳ÌÖÂÛ |
|