Linux/Unix ½ø³Ì¼äͨÐŵĸ÷ÖÖ·½Ê½¼°Æä±È½Ï
½ø³Ì¼äͨОÍÊÇÔÚ²»Í¬½ø³ÌÖ®¼ä´«²¥»ò½»»»ÐÅÏ¢£¬ÄÇô²»Í¬½ø³ÌÖ®¼ä´æÔÚ×Åʲô˫·½¶¼¿ÉÒÔ·ÃÎʵĽéÖÊÄØ£¿½ø³ÌµÄÓû§¿Õ¼äÊÇ»¥Ïà¶ÀÁ¢µÄ£¬Ò»°ã¶øÑÔÊDz»ÄÜ»¥Ïà·ÃÎʵģ¬Î¨Ò»µÄÀýÍâÊǹ²ÏíÄÚ´æÇø¡£µ«ÊÇ£¬ÏµÍ³¿Õ¼äÈ´ÊÇ“¹«¹²³¡Ëù”£¬ËùÒÔÄÚºËÏÔÈ»¿ÉÒÔÌṩÕâÑùµÄÌõ¼þ¡£³ý´ËÒÔÍ⣬ÄǾÍÊÇË«·½¶¼¿ÉÒÔ·ÃÎʵÄÍâÉèÁË¡£ÔÚÕâ¸öÒâÒåÉÏ£¬Á½¸ö½ø³Ìµ±È»Ò²¿ÉÒÔͨ¹ý´ÅÅÌÉÏµÄÆÕͨÎļþ½»»»ÐÅÏ¢£¬»òÕßͨ¹ý“×¢²á±í”»òÆäËüÊý¾Ý¿âÖеÄijЩ±íÏîºÍ¼Ç¼½»»»ÐÅÏ¢¡£¹ãÒåÉÏÕâÒ²Êǽø³Ì¼äͨÐŵÄÊֶΣ¬µ«ÊÇÒ»°ã¶¼²»°ÑÕâËã×÷“½ø³Ì¼äͨÐÅ”¡£ÒòΪÄÇЩͨÐÅÊֶεÄЧÂÊÌ«µÍÁË£¬¶øÈËÃǶԽø³Ì¼äͨÐŵÄÒªÇóÊÇÒªÓÐÒ»¶¨µÄʵʱÐÔ¡£
¡¡¡¡½ø³Ì¼äͨОÍÊÇÔÚ²»Í¬½ø³ÌÖ®¼ä´«²¥»ò½»»»ÐÅÏ¢£¬ÄÇô²»Í¬½ø³ÌÖ®¼ä´æÔÚ×Åʲô˫·½¶¼¿ÉÒÔ·ÃÎʵĽéÖÊÄØ£¿½ø³ÌµÄÓû§¿Õ¼äÊÇ»¥Ïà¶ÀÁ¢µÄ£¬Ò»°ã¶øÑÔÊDz»ÄÜ»¥Ïà·ÃÎʵģ¬Î¨Ò»µÄÀýÍâÊǹ²ÏíÄÚ´æÇø¡£µ«ÊÇ£¬ÏµÍ³¿Õ¼äÈ´ÊÇ“¹«¹²³¡Ëù”£¬ËùÒÔÄÚºËÏÔÈ»¿ÉÒÔÌṩÕâÑùµÄÌõ¼þ¡£³ý´ËÒÔÍ⣬ÄǾÍÊÇË«·½¶¼¿ÉÒÔ·ÃÎʵÄÍâÉèÁË¡£ÔÚÕâ¸öÒâÒåÉÏ£¬Á½¸ö½ø³Ìµ±È»Ò²¿ÉÒÔͨ¹ý´ÅÅÌÉÏµÄÆÕͨÎļþ½»»»ÐÅÏ¢£¬»òÕßͨ¹ý“×¢²á±í”»òÆäËüÊý¾Ý¿âÖеÄijЩ±íÏîºÍ¼Ç¼½»»»ÐÅÏ¢¡£¹ãÒåÉÏÕâÒ²Êǽø³Ì¼äͨÐŵÄÊֶΣ¬µ«ÊÇÒ»°ã¶¼²»°ÑÕâËã×÷“½ø³Ì¼äͨÐÅ”¡£ÒòΪÄÇЩͨÐÅÊֶεÄЧÂÊÌ«µÍÁË£¬¶øÈËÃǶԽø³Ì¼äͨÐŵÄÒªÇóÊÇÒªÓÐÒ»¶¨µÄʵʱÐÔ¡£
¡¡
¡¡¡¡½ø³Ì¼äͨÐÅÖ÷Òª°üÀ¨¹ÜµÀ, ϵͳIPC(°üÀ¨ÏûÏ¢¶ÓÁÐ,ÐźÅÁ¿,¹²Ïí´æ´¢), SOCKET.
¡¡¡¡¹ÜµÀ°üÀ¨ÈýÖÖ:1)ÆÕͨ¹ÜµÀPIPE, ͨ³£ÓÐÖÖÏÞÖÆ,Ò»ÊǰëË«¹¤,Ö»Äܵ¥Ïò´«Êä;¶þÊÇÖ»ÄÜÔÚ¸¸×Ó½ø³Ì¼äʹÓÃ. 2)Á÷¹ÜµÀs_pipe: È¥³ýÁ˵ÚÒ»ÖÖÏÞÖÆ,¿ÉÒÔË«Ïò´«Êä. 3)ÃüÃû¹ÜµÀ:name_pipe, È¥³ýÁ˵ڶþÖÖÏÞÖÆ,¿ÉÒÔÔÚÐí¶à²¢²»Ïà¹ØµÄ½ø³ÌÖ®¼ä½øÐÐͨѶ.
¡¡¡¡ÏµÍ³IPCµÄÈýÖÖ·½Ê½Ààͬ,¶¼ÊÇʹÓÃÁËÄÚºËÀïµÄ±êʶ·ûÀ´Ê¶±ð.
FAQ1: ¹ÜµÀÓëÎļþÃèÊö·û,ÎļþÖ¸ÕëµÄ¹ØÏµ?
¡¡¡¡´ð: Æäʵ¹ÜµÀµÄʹÓ÷½·¨ÓëÎļþÀàËÆ,¶¼ÄÜʹÓÃread,write,openµÈÆÕͨIOº¯Êý. ¹ÜµÀÃèÊö·ûÀ´ÀàËÆÓÚÎļþÃèÊö·û. ÊÂʵÉÏ, ¹ÜµÀʹÓõÄÃèÊö·û, ÎļþÖ¸ÕëºÍÎļþÃèÊö·û×îÖÕ¶¼»áת»¯³ÉϵͳÖÐSOCKETÃèÊö·û. ¶¼Êܵ½ÏµÍ³ÄÚºËÖÐSOCKETÃèÊö·ûµÄÏÞÖÆ. ±¾ÖÊÉÏLINUXÄÚºËÔ´ÂëÖйܵÀÊÇͨ¹ý¿ÕÎļþÀ´ÊµÏÖ.
FAQ2: ¹ÜµÀµÄʹÓ÷½·¨?
¡¡¡¡´ð: Ö÷ÒªÓÐÏÂÃæ¼¸ÖÖ·½·¨:&nbs
Ïà¹ØÎĵµ£º
Ö÷Ì⣺ linuxÄÚºËÄ£¿éµÄ³ÌÐò½á¹¹--Ä£¿é¼ÓÔØº¯Êý(±ØÐë)£¬Ä£¿éÐ¶ÔØº¯Êý(±ØÐë)£¬Ä£¿éÐí¿ÉÖ¤ÉùÃ÷(±ØÐë)£¬Ä£¿é²ÎÊý(¿ÉÑ¡)£¬Ä£¿éµ¼³ö·ûºÅ(¿ÉÑ¡)£¬Ä£¿é×÷ÕߵĵÈÐÅÏ¢ÉùÃ÷(¿ÉÑ¡)
Ò»¸ölinuxÄÚºËÄ£¿éÖ÷ÒªÓÉÒÔϼ¸¸ö²¿·Ö×é³É¡£
1¡¢Ä£¿é¼ÓÔØº¯Êý"ÓÃmodule_init()À´Ö¸¶¨"(±ØÐë)
µ±Í¨¹ýinsmodºÍmodprobeÃüÁî¼ÓÔØÄÚºËÄ£¿éʱ ......
Ê×ÏȽéÉÜÏÂpthread_cond_t¡£ ÔÚLinuxϳÆÖ®Îª×´Ì¬±äÁ¿£¬ÓëÖ®Ïà¹ØµÄÓÐÏÂÃæ¼¸¸öAPI:
int pthread_cond_init (pthread_cond_t *COND,pthread_condattr_t *cond_ATTR);
int pthread_cond_signal (pthread_cond_t *COND);
int pthread_cond_broadcast (pthread_con ......
ÏàÐÅg r e pÊÇU N I XºÍL I N U XÖÐʹÓÃ×î¹ã·ºµÄÃüÁîÖ®Ò»¡£g r e p£¨È«¾ÖÕýÔò±í´ïʽ°æ±¾£©ÔÊÐí¶ÔÎı¾Îļþ½øÐÐģʽ²éÕÒ¡£Èç¹ûÕÒµ½Æ¥Åäģʽ£¬ g r e p´òÓ¡°üº¬Ä£Ê½µÄËùÓÐÐС£g r e pÖ§³Ö»ù±¾ÕýÔò±í´ïʽ£¬Ò²Ö§³ÖÆäÀ©Õ¹¼¯¡£g r e pÓÐÈýÖÖ±äÐΣ¬¼´£º
G r e p£º ±ê×¼g r e pÃüÁ±¾ÕÂ´ó²¿·ÖÆª·ù¼¯ÖÐÌÖÂ۴˸ñʽ¡£
E g r e p£º ......
ÎÄÕÂÀ´Ô´£ºhttp://blog.chinaunix.net/u3/94284/showart_1982227.html
Ò»:ǰÑÔ
½Ó×ÅÇ°ÃæµÄÖÕ¶Ë¿ØÖÆÌ¨·ÖÎö,½ÓÏÂÀ´·ÖÎöserialµÄÇý¶¯.ÔÚlinuxÖÐ,serialÒ²¶ÔÓ¦×ÅÖÕ¶Ë,ͨ³£±»³ÆÎª´®¿ÚÖÕ¶Ë.ÔÚshellÉÏ,ÎÒÃÇ¿´µ½µÄ/dev/ttyS*¾ÍÊÇ´®¿ÚÖÕ¶ËËù¶ÔÓ¦µÄÉ豸½Úµã.
ÔÚ·ÖÎö¾ßÌåµÄserialÇý¶¯Ö®Ç°.ÓбØÒªÏÈ·ÖÎöuartÇý¶¯¼Ü¹¹.uartÊÇUniversal ......
²Ù×÷ϵͳÄں˿ÉÄÜÊÇ΢Äںˣ¬Ò²¿ÉÄÜÊǵ¥Äںˣ¨ºóÕßÓÐʱ³ÆÖ®ÎªºêÄÚºËMacrokernel£©¡£°´ÕÕÀàËÆ·â×°µÄÐÎʽ£¬ÕâЩÊõÓﶨÒåÈçÏ£º
µ¥ÄںˣºÒ²³ÆÎªºêÄںˡ£½«Äں˴ÓÕûÌåÉÏ×÷Ϊһ¸ö´ó¹ý³ÌʵÏÖ£¬²¢Í¬Ê±ÔËÐÐÔÚÒ»¸öµ¥¶ÀµÄµØÖ·¿Õ¼ä¡£ËùÓеÄÄں˷þÎñ¶¼ÔÚÒ»¸öµØÖ·¿Õ¼äÔËÐУ¬Ï໥֮¼äÖ±½Óµ÷Óú¯Êý£¬¼òµ¥¸ßЧ¡£Î¢Ä ......