锘??xml version="1.0" encoding="utf-8" standalone="yes"?>先锋资源久久,黑人极品videos精品欧美裸,国产精品草草http://m.shnenglu.com/tankzhouqiang/category/16135.htmlzh-cnTue, 08 Jan 2013 15:02:30 GMTTue, 08 Jan 2013 15:02:30 GMT60銆愭搷浣滅郴緇熴慙inux鎬ц兘鐩戞帶鈥斺擟PU銆丮emory銆両O銆丯etwork錛堣漿杞斤級http://m.shnenglu.com/tankzhouqiang/archive/2012/12/26/196699.html鍛ㄥ己鍛ㄥ己Wed, 26 Dec 2012 14:02:00 GMThttp://m.shnenglu.com/tankzhouqiang/archive/2012/12/26/196699.htmlhttp://m.shnenglu.com/tankzhouqiang/comments/196699.htmlhttp://m.shnenglu.com/tankzhouqiang/archive/2012/12/26/196699.html#Feedback0http://m.shnenglu.com/tankzhouqiang/comments/commentRss/196699.htmlhttp://m.shnenglu.com/tankzhouqiang/services/trackbacks/196699.html闃呰鍏ㄦ枃

鍛ㄥ己 2012-12-26 22:02 鍙戣〃璇勮
]]>
top鍛戒護(杞澆)http://m.shnenglu.com/tankzhouqiang/archive/2012/08/28/188551.html鍛ㄥ己鍛ㄥ己Tue, 28 Aug 2012 12:42:00 GMThttp://m.shnenglu.com/tankzhouqiang/archive/2012/08/28/188551.htmlhttp://m.shnenglu.com/tankzhouqiang/comments/188551.htmlhttp://m.shnenglu.com/tankzhouqiang/archive/2012/08/28/188551.html#Feedback0http://m.shnenglu.com/tankzhouqiang/comments/commentRss/188551.htmlhttp://m.shnenglu.com/tankzhouqiang/services/trackbacks/188551.html闃呰鍏ㄦ枃

鍛ㄥ己 2012-08-28 20:42 鍙戣〃璇勮
]]>
鎶宸э細澶氬叡浜姩鎬佸簱涓悓鍚嶅璞¢噸澶嶆瀽鏋勯棶棰樼殑瑙e喅鏂規(guī)硶(杞澆)http://m.shnenglu.com/tankzhouqiang/archive/2012/03/02/166985.html鍛ㄥ己鍛ㄥ己Fri, 02 Mar 2012 08:04:00 GMThttp://m.shnenglu.com/tankzhouqiang/archive/2012/03/02/166985.htmlhttp://m.shnenglu.com/tankzhouqiang/comments/166985.htmlhttp://m.shnenglu.com/tankzhouqiang/archive/2012/03/02/166985.html#Feedback0http://m.shnenglu.com/tankzhouqiang/comments/commentRss/166985.htmlhttp://m.shnenglu.com/tankzhouqiang/services/trackbacks/166985.htmlLinux 鏀寔鐨勫叡浜▼搴忓簱錛?strong>lib*.so錛夋妧鏈笉浠呰兘澶熸湁鏁堝埄鐢ㄧ郴緇熻祫婧愶紝鑰屼笖榪樺紼嬪簭璁捐甯︽潵浜嗗緢澶х殑渚垮埄鎬с侀氱敤鎬х瓑錛屽洜姝よ鍚勭綰у埆鐨勫簲鐢ㄧ郴緇熷箍娉涢噰鐢ㄣ?鍔ㄦ侀摼鎺ョ殑鍏變韓搴撴槸鍦ㄥ姞杞藉簲鐢ㄧ▼搴忔椂琚姞杞界殑錛岃屼笖瀹冧笌搴旂敤紼嬪簭鏄湪榪愯鏃剁粦瀹氱殑錛氶氳繃鍔ㄦ侀摼鎺ュ櫒錛屽皢鍔ㄦ佸叡浜簱鏄犲皠榪涘簲鐢ㄧ▼搴忕殑鍙墽琛屽唴瀛樹腑錛堝姩鎬侀摼鎺ワ級錛涘湪鍚姩搴旂敤紼嬪簭鏃訛紝鍔ㄦ佽杞藉櫒灝嗘墍闇鐨勫叡浜洰鏍囧簱鏄犲皠鍒板簲鐢ㄧ▼搴忕殑鍐呭瓨錛堝姩鎬佽杞斤級銆?/p>

鍦ㄩ氬父鎯呭喌涓嬶紝鍏變韓搴撻兘鏄氳繃浣跨敤闄勫姞閫夐」 -fpic 鎴?nbsp;-fPIC 榪涜緙栬瘧錛屼粠鐩爣浠g爜浜х敓浣嶇疆鏃犲叧鐨勪唬鐮侊紙Position Independent Code錛孭IC錛夛紝浣跨敤 -shared閫夐」灝嗙洰鏍囦唬鐮佹斁榪涘叡浜洰鏍囧簱涓備綅緗棤鍏充唬鐮侀渶瑕佽兘澶熻鍔犺澆鍒頒笉鍚岃繘紼嬬殑涓嶅悓鍦板潃錛屽茍涓旇兘寰椾互姝g‘鐨勬墽琛岋紝鏁呭叾浠g爜瑕佺粡榪囩壒鍒殑緙栬瘧澶勭悊錛氫綅緗棤鍏充唬鐮侊紙PIC錛夊甯擱噺鍜屽嚱鏁板叆鍙e湴鍧鐨勬搷浣滈兘鏄噰鐢ㄥ熀浜庡熀瀵勫瓨鍣紙base register錛塀ASE+ 鍋忕Щ閲忕殑鐩稿鍦板潃鐨勫鍧鏂瑰紡銆傚嵆浣跨▼搴忚瑁呰澆鍒板唴瀛樹腑鐨勪笉鍚屽湴鍧錛屽嵆 BASE 鍊間笉鍚岋紝鑰屽亸縐婚噺鏄笉鍙樼殑錛屾墍浠ョ▼搴忎粛鐒跺彲浠ユ壘鍒版紜殑鍏ュ彛鍦板潃鎴栬呭父閲忋?/p>

鐒惰岋紝褰撳簲鐢ㄧ▼搴忛摼鎺ヤ簡澶氫釜鍏變韓搴擄紝濡傛灉鍦ㄨ繖浜涘叡浜簱涓紝瀛樺湪鐩稿悓浣滅敤鍩熻寖鍥寸殑鍚屽悕闈欐佹垚鍛樺彉閲忔垨鑰呭悓鍚?( 闈為潤鎬?) 鍏ㄥ眬鍙橀噺錛岄偅涔堝綋紼嬪簭璁塊棶瀹岄潤鎬佹垚鍛樺彉閲忔垨鍏ㄥ眬鍙橀噺緇撴潫鏋愭瀯鏃訛紝鐢變簬鏌愬唴瀛樺潡鐨?double free 浼氬鑷?core dump錛岃繖鏄敱浜?Linux 緙栬瘧鍣ㄧ殑緙洪櫡閫犳垚鐨勩?/p>

搴旂敤鍦烘櫙鍘熷瀷

璇ラ棶棰樻簮浜庣瑪鑰呮墍浠庝簨鐨勫紑鍙戦」鐩細IBM Tivoli Workload Scheduler (TWS) LoadLeveler銆?strong>LoadLeveler鏄?nbsp;IBM鍦ㄩ珮鎬ц兘璁$畻錛?strong>High Performance Computing錛孒PC錛夐鍩熺殑涓嬈句綔涓氳皟搴﹁蔣浠躲傚畠涓昏鍒嗕負涓や釜澶х殑妯″潡錛屽垎鍒槸璋冨害妯″潡錛坰cheduler錛夊拰璧勬簮綆$悊妯″潡錛坮esource manger錛夈?涓や釜妯″潡涓垎鍒惈鏈夊叧浜庨厤緗鐞嗗姛鑳界殑鍏變韓搴擄紝鐢變簬鏌愪簺閰嶇疆綆$悊閫夐」涓轟袱妯″潡鎵鍏卞悓閲囩敤錛屾墍浠ヤ袱妯″潡涔嬮棿鍏變韓浜嗛儴鍒嗘簮鏂囦歡浠g爜錛屽叾涓寘鍚湁鍚屽悕鐨勭被闈欐佹垚鍛樸?/p>

鍙互閫氳繃浠ヤ笅綆鍗曠殑妯″瀷榪涜鎻忚堪錛?/p>
鍥?1. 搴旂敤鍦烘櫙
鍥劇墖紺轟緥 

瀵瑰簲鐨勫悇妯″潡浠g爜鐗囨濡備笅鍥炬墍紺猴細


鍥?2. 搴旂敤鍦烘櫙妯℃嫙浠g爜
鍥劇墖紺轟緥 

鍏朵腑錛宼est.c 鏄富紼嬪簭錛屽寘鍚湁涓や釜澶存枃浠訛細api1.h 涓?api2.h錛涘ご鏂囦歡 api1.h 鍖呭惈澶存枃浠?lib1/lib.h 鍜屼竴鍔熻兘鍑芥暟 func_api1()錛宎pi2.h 鍖呭惈澶存枃浠?lib2/lib.h 鍜屼竴鍔熻兘鍑芥暟 func_api2()錛涚洰褰?lib1 鍜?lib2 涓嬬殑婧愭枃浠跺垎鍒紪璇戠敓鎴愬叡浜簱 lib1.so 鍜?lib2.so銆傚悓鏃訛紝澶存枃浠?lib1/lib.h 涓?lib2/lib.h 閾炬帴鍒板悓涓鍏變韓鏂囦歡 lib.h銆傚湪鏂囦歡 lib.h 涓畾涔夋湁涓闈欐佹垚鍛樺彉閲?#8220;static std::vector<int> vec_int”銆?/p>

鍥為〉棣?/a>

鍔熻兘鍑芥暟涓庡悇闈欐佹垚鍛樺嚱鏁頒唬鐮佹竻鍗?/span>

鍔熻兘鍑芥暟 func_api1() 涓?func_api2() 鐨勫疄鐜扮被浼鹼紝閫氳繃璋冪敤闈欐佹垚鍛樺嚱鏁拌揪鍒拌闂潤鎬佹垚鍛樺彉閲?nbsp;vec_int鐨勭洰鐨勶細


娓呭崟 1. 鍔熻兘鍑芥暟 func_api1(int)
          void func_api1(int i) {      printf("%s.\n", __FILE__);       A::set(i);      A::print();      return;   }      

闈欐佹垚鍛樺嚱鏁?A::set() 涓?A::print() 鐨勫疄鐜板涓嬶細


娓呭崟 2. 闈欐佹垚鍛樺嚱鏁?A::set(int)
          void A::set(int num) {      vec_int.clear();      for (int i = 0; i < num; i++) {          vec_int.push_back(i);      }      return;   }      


娓呭崟 3. 闈欐佹垚鍛樺嚱鏁?A::print()
          void A::print() {      for (int i = 0; i < vec_int.size(); i++) {          printf("vec_int[%d] = %d, addr: %p.\n", i, vec_int[i], &vec_int[i]);      }      printf("vec_int addr: %p.\n", &vec_int);      return;   }      

A::set() 瀵歸潤鎬佹垚鍛?nbsp;vec_int榪涜璧嬪兼搷浣滐紝鑰?A::print() 鍒欐墦鍗板叾涓殑鍊間笌褰撳墠欏圭殑鍐呭瓨鍦板潃銆?/p>

鍥為〉棣?/a>

榪愯緇撴灉

濡傛灉涓や釜鍏變韓搴撴槸閫氳繃閫夐」 -fpic鎴?nbsp;-fPIC緙栬瘧鐨勮瘽錛岃繍琛岀▼搴?test錛岃緭鍑哄涓嬶細


娓呭崟 4. 閫夐」 -fPIC 鐨勬祴璇曠粨鏋?/strong>
          $ export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH   $ g++ -g -o lib1.so -fPIC-rdynamic -shared lib1/lib.c   $ g++ -g -o lib2.so -fPIC-rdynamic -shared lib2/lib.c   $ g++ -g -o test -L./ -l1 -l2 test.c   $ ./test  api1.h.   vec_int[0] = 0, addr: 0x9cbf028.   vec_int[1] = 1, addr: 0x9cbf02c.   vec_int[2] = 2, addr: 0x9cbf030.   vec_int[3] = 3, addr: 0x9cbf034.   vec_int addr: 0xe89228.   *** glibc detected *** ./test: double free or corruption (fasttop): 0x09cbf028***   ======= Backtrace:=========   /lib/libc.so.6[0x2b2b16]   /lib/libc.so.6(cfree+0x90)[0x2b6030]   /usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0x5d1731]   ./lib1.so(_ZN9__gnu_cxx13new_allocatorIiE10deallocateEPij+0x1d)[0xe88417]         ./lib1.so(_ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPij+0x33)[0xe88451]         ./lib1.so(_ZNSt12_Vector_baseIiSaIiEED2Ev+0x42)[0xe8849a]         ./lib1.so(_ZNSt6vectorIiSaIiEED1Ev+0x60)[0xe8850c]  ./lib2.so[0x961d6c]   /lib/libc.so.6(__cxa_finalize+0xa9)[0x275c79]   ./lib2.so[0x961c34]   ./lib2.so[0x962d3c]   /lib/ld-linux.so.2[0x23a7de]   /lib/libc.so.6(exit+0xe9)[0x2759c9]   /lib/libc.so.6(__libc_start_main+0xe4)[0x25fdf4]   ./test(__gxx_personality_v0+0x45)[0x80484c1]   ======= Memory map:========   ......   00960000-00963000 r-xp 00000000 00:1b 7668734    ./lib2.so   00963000-00964000 rwxp 00003000 00:1b 7668734    ./lib2.so   00970000-00971000 r-xp 00970000 00:00 0          [vdso]   00e86000-00e89000 r-xp 00000000 00:1b 7668022    ./lib1.so   00e89000-00e8a000 rwxp 00003000 00:1b 7668022    ./lib1.so  08048000-08049000 r-xp 00000000 00:1b 7668748    ./test   08049000-0804a000 rw-p 00000000 00:1b 7668748    ./test   09cbf000-09ce0000 rw-p 09cbf000 00:00 0          [heap]  ......   Abort(coredump)   $      

浠庣▼搴忕殑杈撳嚭鐩磋鐨勭湅鍒幫紝core 浜х敓鏄敱浜庡爢鍐呭瓨鍖哄煙錛?strong>09cbf000-09ce0000錛変腑璧峰鍦板潃涓?nbsp;0x09cbf028鐨勫唴瀛樺尯琚噴鏀句簡涓ゆ瀵艱嚧鐨勶紝璇ュ湴鍧姝e紡闈欐佹垚鍛樺彉閲?nbsp;vec_int鐨勭涓涓厓绱犵殑鍦板潃銆?/p>

涓轟粈涔堜細鍑虹幇鍚屼竴鍧楀唴瀛樺尯錛岃閲婃斁涓ゆ鐨勬儏褰㈠憿錛?/p>

鍥為〉棣?/a>

鍘熷洜鍒嗘瀽

鎴戜滑鐭ラ亾錛岄潤鎬佹垚鍛樺彉閲忎笌鍏ㄥ眬鍙橀噺綾諱技錛岄兘閲囩敤浜嗛潤鎬佸瓨鍌ㄦ柟寮忋傚浜庡姞浜嗛夐」 -fpic鎴?nbsp;-fPIC鐨勫叡浜簱錛岃繖浜涘彉閲忕殑鍦板潃閮藉瓨鏀懼湪璇ュ叡浜簱鐨勫叏灞鍋忕Щ琛紙Global Offset Table錛孏OT錛変腑銆?/p>

閫氳繃 objdump鎴栬?nbsp;readelf鍛戒護鍒嗘瀽鍏變韓搴?nbsp;lib1.so錛岀粨鏋滃涓嬶細


娓呭崟 5. objdump 鍒嗘瀽鍏變韓搴?lib1.so 鐨勮緭鍑?/strong>
          $ objdump -x -R lib1.so    lib1.so:     file format elf32-i386   ......   Sections:   Idx Name          Size      VMA       LMA       File off  Algn    0 .gnu.hash     000001e8  000000d4  000000d4  000000d4  2**2                    CONTENTS, ALLOC, LOAD, READONLY, DATA   ......   18 .dynamic      000000d8  0000301c  0000301c  0000301c  2**2                    CONTENTS, ALLOC, LOAD, DATA   19 .got          00000014  000030f4  000030f4  000030f4  2**2                   CONTENTS, ALLOC, LOAD, DATA   20 .got.plt      00000114  00003108  00003108  00003108  2**2                    CONTENTS, ALLOC, LOAD, DATA   ......   DYNAMIC RELOCATION RECORDS   OFFSET   TYPE              VALUE   ......   000030f4 R_386_GLOB_DAT    __gmon_start__   000030f8 R_386_GLOB_DAT    _Jv_RegisterClasses   000030fc R_386_GLOB_DAT    _ZN1A7vec_intE  00003104 R_386_GLOB_DAT    __cxa_finalize   ......      


娓呭崟 6. readelf 鍒嗘瀽鍏變韓搴?lib1.so 鐨勮緭鍑?/strong>
          $ objdump -x -R lib1.so    lib1.so:     file format elf32-i386   ......   Sections:   Idx Name          Size      VMA       LMA       File off  Algn    0 .gnu.hash     000001e8  000000d4  000000d4  000000d4  2**2                    CONTENTS, ALLOC, LOAD, READONLY, DATA   ......   18 .dynamic      000000d8  0000301c  0000301c  0000301c  2**2                    CONTENTS, ALLOC, LOAD, DATA   19 .got          00000014  000030f4  000030f4  000030f4  2**2                   CONTENTS, ALLOC, LOAD, DATA   20 .got.plt      00000114  00003108  00003108  00003108  2**2                    CONTENTS, ALLOC, LOAD, DATA   ......   DYNAMIC RELOCATION RECORDS   OFFSET   TYPE              VALUE   ......   000030f4 R_386_GLOB_DAT    __gmon_start__   000030f8 R_386_GLOB_DAT    _Jv_RegisterClasses   000030fc R_386_GLOB_DAT    _ZN1A7vec_intE  00003104 R_386_GLOB_DAT    __cxa_finalize   ......      

浠庝笂闈袱涓懡浠ょ殑杈撳嚭緇撴灉涓彲浠ョ湅鍑猴紝鍏變韓搴?nbsp;lib1.so涓?nbsp;GOT孌電殑璧峰鍐呭瓨鍦板潃涓?nbsp;000030f4錛屽ぇ灝忎負 20 瀛楄妭 (0x14)錛涢潤鎬佹垚鍛樺彉閲?nbsp;vec_int鍦ㄥ叡浜簱 lib1.so涓殑璧峰鍋忕Щ鍦板潃涓?nbsp;000030fc銆傛樉鐒訛紝vec_int浣嶄簬璇ュ叡浜簱鐨?nbsp;GOT孌靛唴銆?/p>

褰撳簲鐢ㄧ▼搴忓悓鏃墮摼鎺?nbsp;lib1.so鍜?nbsp;lib2.so鏃訛紝鍚屽悕闈欐佹垚鍛樺彉閲?nbsp;vec_int鍒嗗埆浣嶄簬鍏跺叡浜簱鐨?nbsp;GOT鍖恒傚綋紼嬪簭榪愯鏃訛紝緋葷粺浠庣鍙瘋〃涓煡鎵懼茍瑁呰澆鏋勯犱竴浠?nbsp;vec_int鏁版嵁錛岃繖鐐逛粠紼嬪簭榪愯鐨勮緭鍑虹粨鏋滐紙娓呭崟 4錛夌殑“Backtrace”閮ㄥ垎鍙互鐪嬪埌錛氬彧鏈?nbsp;lib1.so涓殑闈欐佹垚鍛樺彉閲忚瑁呰澆鏋勯狅紱鍚屾椂錛岄氳繃鍐呭瓨鏄犲皠錛?strong>Memory map錛夐儴鍒嗭紙娓呭崟 4錛夛紝鍙互瑙傚療鍒?nbsp;vec_int瀵硅薄鐨勫湴鍧 0xe89228姝eソ澶勫湪涓哄叡浜簱 lib1.so鍒嗛厤鐨勫彲璇誨唴瀛樺尯 00e89000-00e8a000涓細

        00e89000-00e8a000 rwxp 00003000 00:1b 7668022    ./lib1.so

鐒跺悗錛屽綋紼嬪簭緇撴潫鏃訛紝鍗村璇ュ彉閲忚繘琛屼簡涓ゆ鏋愭瀯鎿嶄綔錛岄氳繃 gdb鍒嗘瀽 core 鏂囦歡錛?/p>
娓呭崟 7. core 鏂囦歡鍒嗘瀽緇撴灉
          $ gdb ./test core.28440 ……  Core was generated by `./test'.   Program terminated with signal 6, Aborted.   #0  0x00970402 in __kernel_vsyscall ()   (gdb)   (gdb) where   #0  0x00970402 in __kernel_vsyscall ()   #1  0x00272d10 in raise () from /lib/libc.so.6   #2  0x00274621 in abort () from /lib/libc.so.6   #3  0x002aae5b in __libc_message () from /lib/libc.so.6   #4  0x002b2b16 in _int_free () from /lib/libc.so.6   #5  0x002b6030 in free () from /lib/libc.so.6   #6  0x005d1731 in operator delete () from /usr/lib/libstdc++.so.6   #7  0x00e88417 in __gnu_cxx::new_allocator<int>::deallocate       (this=0xe89228, __p=0x9cbf028)      at /usr/lib/gcc/i386-redhat-linux/.../ext/new_allocator.h:94   #8  0x00e88451 in std::_Vector_base<int, ... (this=0xe89228, __p=0x9cbf028, __n=4)      at /usr/lib/gcc/.../include/c++/4.1.2/bits/stl_vector.h:133   #9  0x00e8849a in ~_Vector_base (this=0xe89228)      at /usr/lib/gcc/.../include/c++/4.1.2/bits/stl_vector.h:119   #10 0x00e8850cin ~vector (this=0xe89228) at /usr/lib/gcc/.../stl_vector.h:272   #11 0x00961d6c in __tcf_0 () at lib2/lib.c:3   #12 0x00275c79 in __cxa_finalize () from /lib/libc.so.6   #13 0x00961c34 in __do_global_dtors_aux () from ./lib2.so   #14 0x00962d3c in _fini () from ./lib2.so  #15 0x0023a7de in _dl_fini () from /lib/ld-linux.so.2   #16 0x002759c9 in exit () from /lib/libc.so.6   #17 0x0025fdf4 in __libc_start_main () from /lib/libc.so.6   #18 0x080484c1 in _start ()   (gdb)      

浠庢竻鍗?7 涓彲浠ョ湅鍑猴紝浠庡撫 #14 寮濮嬶紝紼嬪簭榪涜 lib2.so涓殑鏋愭瀯鎿嶄綔錛岀洿鍒?#11錛岄兘榪愯鍦?nbsp;lib2.so涓紝褰撹繘鍏ュ撫 #10 鏃訛紝榪涜鍙橀噺鏋愭瀯鏃訛紝鍏跺湴鍧涓?nbsp;0x00e8850c錛岃鍦板潃涓殑瀵硅薄鏄▼搴忓惎鍔ㄦ椂鐢卞叡浜簱 lib1.so瑁呰澆鏋勯犲嚭鏉ョ殑錛堟竻鍗?1錛夛細

        ./lib1.so(_ZNSt6vectorIiSaIiEED1Ev+0x60)[0xe8850c]

褰撶▼搴忕粨鏉熸椂錛岃繍琛屽簱 glibc媯嫻嬪埌鍏變韓搴?nbsp;lib2.so鏋愭瀯浜嗗茍闈炵敱鍏舵瀯閫犵殑瀵硅薄錛屽鑷翠簡 core dump銆?/p>

榪欑鎯呭喌涓嬶紝濡傛灉鏇挎崲浣跨敤閫夐」 -fpie鎴?nbsp;-fPIE錛屾搷浣滄楠や笌榪愯緇撴灉濡備笅鎵紺猴細


娓呭崟 8. 閫夐」 -fPIE 鐨勬祴璇曠粨鏋?/strong>
          $ export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH   $ g++ -g -o lib1.so -fPIE-rdynamic -shared lib1/lib.c   $ g++ -g -o lib2.so -fPIE-rdynamic -shared lib2/lib.c   $ g++ -g -pie -o test -L./ -l1 -l2 test.c   $ ./test  api1.h.   vec_int[0] = 0, addr: 0x80e3028.   vec_int[1] = 1, addr: 0x80e302c.   vec_int[2] = 2, addr: 0x80e3030.   vec_int[3] = 3, addr: 0x80e3034.   vec_int addr: 0x75e224.   $      

紼嬪簭榪愯緇撴灉絎﹀悎鏈熸湜騫舵甯哥粨鏉熴?/p>

榪欐槸鍥犱負錛屽綋浣跨敤閫夐」 -fpie鎴?nbsp;-fPIE鏃訛紝鐢熸垚鐨勫叡浜簱涓嶄細涓洪潤鎬佹垚鍛樺彉閲忔垨鍏ㄥ眬鍙橀噺鍦?nbsp;GOT涓垱寤哄搴旂殑鏉$洰錛堥氳繃 objdump鎴?strong>readelf鍛戒護鍙互鏌ョ湅錛屾澶勪笉鍐嶈禈榪幫級錛屼粠鑰岄伩鍏嶄簡鐢變簬闈欐佸璞?#8220;鏋勯犱竴嬈★紝鏋愭瀯涓ゆ”鑰屽鍚屼竴鍐呭瓨鍖哄煙閲婃斁涓ゆ寮曡搗鐨勭▼搴?core dump銆?/p>

閫夐」 -fpie鍜?nbsp;-fPIE涓?nbsp;-fpic鍙?nbsp;-fPIC鐨勭敤娉曞緢鐩鎬技錛屽尯鍒湪浜庡墠鑰呮繪槸灝嗙敓鎴愮殑浣嶇疆鏃犲叧浠g爜鐪嬩綔鏄睘浜庣▼搴忔湰韜紝騫剁洿鎺ラ摼鎺ヨ繘璇ュ彲鎵ц紼嬪簭錛岃岄潪瀛樺叆鍏ㄥ眬鍋忕Щ琛?nbsp;GOT涓紱榪欐牱錛屽浜庡悓鍚嶇殑闈欐佹垨鍏ㄥ眬瀵硅薄鐨勮闂紝鍏舵瀯閫犱笌鏋愭瀯鎿嶄綔灝嗕繚鎸佷竴涓瀵瑰簲銆?/p>

鍥為〉棣?/a>

緇撴潫璇?/span>

閫氳繃浣跨敤閫夐」 -fpie鎴?nbsp;-fPIE浠f浛 -fpic鎴栬?nbsp;-fPIC錛屼嬌寰楃敓鎴愮殑鍏變韓搴撲笉浼氫負闈欐佹垚鍛樺彉閲忔垨鍏ㄥ眬鍙橀噺鍦?nbsp;GOT涓垱寤哄搴旂殑鏉$洰錛屽悓鏃朵篃灝遍伩鍏嶄簡閽堝鍚屽悕闈欐佸璞?#8220;鏋勯犱竴嬈★紝鏋愭瀯涓ゆ”鐨勪笉褰撴搷浣溿?br />
杞嚜錛?a >http://www.ibm.com/developerworks/cn/linux/l-cn-sdlstatic/ 







鍛ㄥ己 2012-03-02 16:04 鍙戣〃璇勮
]]>
linux RPC 嫻嬭瘯錛堣漿杞斤級http://m.shnenglu.com/tankzhouqiang/archive/2011/08/07/152718.html鍛ㄥ己鍛ㄥ己Sun, 07 Aug 2011 08:44:00 GMThttp://m.shnenglu.com/tankzhouqiang/archive/2011/08/07/152718.htmlhttp://m.shnenglu.com/tankzhouqiang/comments/152718.htmlhttp://m.shnenglu.com/tankzhouqiang/archive/2011/08/07/152718.html#Feedback0http://m.shnenglu.com/tankzhouqiang/comments/commentRss/152718.htmlhttp://m.shnenglu.com/tankzhouqiang/services/trackbacks/152718.html杞嚜:
http://www.justwinit.cn/post/3960/


RPC鏄痝libc鎻愪緵鐨勫嚱鏁板弬鏁?榪斿洖鍊煎皝瑁呮湇鍔? 騫跺皢灝佽緇撴灉閫氳繃緗戠粶浼犲埌鏈嶅姟鍣?
RPC鏈嶅姟绔鍏堣鍚姩portmapper鏈嶅姟.
嫻嬭瘯涓涓畝鍗曠殑RPC浼犺緭紺轟緥, 鍏堝畾涔変竴涓ā鏉挎枃浠秚est.x

program TESTPROG{
        version VERSION{
                int int_echo(int)=1;
                int get_str_len(string)=2;
                int add ( int, int ) = 3;
        }=1;
}=30000;
鍐呭惈3涓嚱鏁? 娉ㄦ剰鍏朵腑涓涓湁2涓弬鏁?
鐒跺悗鍙互鐢╮pcgen鐢熸垚涓涓狹akefile:

rpcgen -a -N test.x

榪欎細鐢熸垚Makefile, 瀹㈡埛绔拰鏈嶅姟绔殑紼嬪簭, 鍜屽嚱鏁扮ず渚?
鎴戜滑鎵嬪伐淇敼涓涓婱akefile

# This is a template Makefile generated by rpcgen
# Parameters
CLIENT = test_client
SERVER = test_server
SOURCES_CLNT.c =
SOURCES_CLNT.h =
SOURCES_SVC.c =
SOURCES_SVC.h =
SOURCES.x = test.x
TARGETS_SVC.c = test_svc.c test_server.c test_xdr.c
TARGETS_CLNT.c = test_clnt.c test_client.c test_xdr.c
TARGETS = test.h test_xdr.c test_clnt.c test_svc.c
OBJECTS_CLNT = $(SOURCES_CLNT.c:%.c=%.o) $(TARGETS_CLNT.c:%.c=%.o)
OBJECTS_SVC = $(SOURCES_SVC.c:%.c=%.o) $(TARGETS_SVC.c:%.c=%.o)
# Compiler flags
CFLAGS += -g -pipe
LDLIBS += -lnsl
RPCGENFLAGS = -N
# Targets
all : $(CLIENT) $(SERVER)
$(TARGETS) : $(SOURCES.x)
        rpcgen $(RPCGENFLAGS) $(SOURCES.x)
$(OBJECTS_CLNT) : $(SOURCES_CLNT.c) $(SOURCES_CLNT.h) $(TARGETS_CLNT.c)
$(OBJECTS_SVC) : $(SOURCES_SVC.c) $(SOURCES_SVC.h) $(TARGETS_SVC.c)
$(CLIENT) : $(OBJECTS_CLNT)
        $(LINK.c) -o $(CLIENT) $(OBJECTS_CLNT) $(LDLIBS)
$(SERVER) : $(OBJECTS_SVC)
        $(LINK.c) -o $(SERVER) $(OBJECTS_SVC) $(LDLIBS)
clean:
         $(RM) core $(TARGETS) $(OBJECTS_CLNT) $(OBJECTS_SVC) $(CLIENT) $(SERVER)

淇敼test_server.c鏈嶅姟绔殑澶勭悊鍑芥暟, 鎻愪緵3縐嶆湇鍔?

/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "test.h"
int *
int_echo_1_svc(int arg1,  struct svc_req *rqstp)
{
        static int  result;
        //echo.
        result=arg1;
        printf("[RPC1] source=%d, echo=%d\n", arg1, result);
        return &result;
}
int *
get_str_len_1_svc(char *arg1,  struct svc_req *rqstp)
{
        static int  result;
        //get strlen.
        result=strlen(arg1);
        printf("[PRC2] str=%s, len=%d\n", arg1, result);
        return &result;
}
int *
add_1_svc(int arg1, int arg2,  struct svc_req *rqstp)
{
        static int  result;
        result=arg1+arg2;
        printf("[RPC3] %d+%d=%d\n", arg1, arg2, result);
        return &result;
}

瀹㈡埛绔痶est_client.c, 璋冪敤榪欎笁縐嶆湇鍔?

/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "test.h"
void
testprog_1(char *host)
{
        CLIENT *clnt;
        int  *result_1;
        int int_echo_1_arg1=55;
        int  *result_2;
        char *get_str_len_1_arg1="Hello, world";
        int  *result_3;
        int add_1_arg1=10;
        int add_1_arg2=20;
        clnt = clnt_create (host, TESTPROG, VERSION, "udp");
        if (clnt == NULL) {
                clnt_pcreateerror (host);
                exit (1);
        }
        result_1 = int_echo_1(int_echo_1_arg1, clnt);
        if (result_1 == (int *) NULL) {
                clnt_perror (clnt, "call failed");
        }
        else
                printf("[PRC1] echo %d, source %d\n", *result_1,
                        int_echo_1_arg1);
        result_2 = get_str_len_1(get_str_len_1_arg1, clnt);
        if (result_2 == (int *) NULL) {
                clnt_perror (clnt, "call failed");
        }
        else
                printf("[RPC2] return %d, should %d\n", *result_2,
                        strlen(get_str_len_1_arg1));
        result_3 = add_1(add_1_arg1, add_1_arg2, clnt);
        if (result_3 == (int *) NULL) {
                clnt_perror (clnt, "call failed");
        }
        else
                printf("[PRC3] %d+%d=%d\n", add_1_arg1, add_1_arg2,
                        *result_3);
        clnt_destroy (clnt);
}
OK, 鍙互璋冪敤make浜?
鐢熸垚鍙墽琛岀▼搴弔est_server鍜宼est_client.
鎴戜滑鍚姩./test_server, 鐢╮pcinfo鐪嬬湅:

$rpcinfo -p 127.0.0.1
program vers proto port
100000 2 tcp 111 portmapper
30000 1 udp 36307
30000 1 tcp 34883
Bingo! 鍚姩鎴愬姛.

鍐嶅紑涓粓绔? 灝濊瘯涓涓嬭皟鐢?

./test_client 127.0.0.1
[PRC1] echo 55, source 55
[RPC2] return 12, should 12
[PRC3] 10+20=30

姝f槸鎴戜滑鏈熸湜鐨?

Add By錛欽ackxiang
make -f Makefile.test


鍛ㄥ己 2011-08-07 16:44 鍙戣〃璇勮
]]>
linux 榪涚▼闂撮氫俊涔嬫秷鎭紶閫?/title><link>http://m.shnenglu.com/tankzhouqiang/archive/2011/07/07/150362.html</link><dc:creator>鍛ㄥ己</dc:creator><author>鍛ㄥ己</author><pubDate>Wed, 06 Jul 2011 18:29:00 GMT</pubDate><guid>http://m.shnenglu.com/tankzhouqiang/archive/2011/07/07/150362.html</guid><wfw:comment>http://m.shnenglu.com/tankzhouqiang/comments/150362.html</wfw:comment><comments>http://m.shnenglu.com/tankzhouqiang/archive/2011/07/07/150362.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.shnenglu.com/tankzhouqiang/comments/commentRss/150362.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tankzhouqiang/services/trackbacks/150362.html</trackback:ping><description><![CDATA[linux 榪涚▼闂撮氫俊涓秷鎭紶閫掍富瑕佸垎涓虹閬擄紝FIFO,娑堟伅闃熷垪<br />錛?錛夌閬?br />綆¢亾鐢眕ipe鍑芥暟鍒涘緩錛屾彁渚涗竴涓崟璺紙鍗曞悜錛夋暟鎹祦銆俻ipe鍑芥暟榪斿洖涓や釜鏂囦歡鎻忚堪絎︼細fd[0]鍜宖d[1]銆傚墠鑰呮墦寮鏉ヨ錛屽悗鑰呮墦寮鏉ュ啓銆傜閬撴病鏈夊悕瀛楋紝鎵浠ュ彧鑳界敱鏈変翰緙樺叧緋葷殑榪涚▼浣跨敤銆傚敖綆$閬撴槸鐢卞崟涓繘紼嬪垱寤虹殑錛屽畠鍗村緢灝戝湪鍗曚釜榪涚▼鍐呬嬌鐢ㄣ傜閬撶殑鍏稿瀷鐢ㄩ斾負涓や釜涓嶅悓榪涚▼錛堜竴涓槸鐖惰繘紼嬶紝涓涓槸瀛愯繘紼嬶級鎻愪緵榪涚▼闂寸殑閫氫俊鎵嬫銆傞鍏堬紝鐢變竴涓繘紼嬶紙瀹冨皢鎴愪負鐖惰繘紼嬶級鍒涘緩涓涓閬撳悗璋冪敤fork媧劇敓涓涓嚜韜殑鍓湰銆傛帴鐫錛岀埗榪涚▼鍏抽棴榪欎釜綆¢亾鐨勮鍑虹錛屽瓙榪涚▼鍏抽棴鍚屼竴綆¢亾鐨勫啓鍏ョ銆傛垨鑰呯埗榪涚▼鍏抽棴榪欎釜綆¢亾鐨勫啓鍏ョ錛屽瓙榪涚▼鍏抽棴鍚屼竴綆¢亾鐨勮鍑虹銆傝繖灝卞湪鐖跺瓙榪涚▼闂存彁渚涗簡涓涓崟鍚戞暟鎹祦銆?br /><br />錛?錛塅IFO<br />FIFO鎸囦唬鍏堣繘鍏堝嚭錛團irst in,First out),linux涓殑FIFO綾諱技綆¢亾銆傚畠鏄竴涓崟鍚戯紙鍗婂弻宸ワ級鏁版嵁嫻併備笉鍚屼簬綆¢亾鐨勬槸錛屾瘡涓狥IFO鏈変竴涓礬寰勫悕涓庝箣鍏寵仈錛屼粠鑰屽厑璁告棤浜茬紭鍏崇郴鐨勮繘紼嬭闂悓涓涓狥IFO銆侳IFO涔熺О涓烘湁鍚嶇閬撱侳IFO鐢眒kfifo鍑芥暟鍒涘緩銆傚叾涓璸athname鏄竴涓櫘閫氱殑Unix璺緞鍚嶏紝瀹冩槸璇IFO鐨勫悕瀛椼俶kfifo 鍑芥暟宸查殣鍚寚瀹?O_CREAT|O_EXCL. 涔熷氨鏄錛屽畠閭d箞鍒涘緩涓涓柊鐨凢IFO錛岃涔堣繑鍥炰竴涓狤EXIST閿欒錛堝鏋滄墍鎸囧畾鐨勫悕瀛楃殑FIFO宸茬粡瀛樺湪錛夈傚鏋滀笉鎯沖笇鏈涘垱寤轟竴涓柊鐨凢IFO,閭e氨鏀逛負璋冪敤open鑰屼笉鏄痬kfifo.瑕佹墦寮涓涓凡瀛樺湪鐨凢IFO鎴栧垱寤轟竴涓柊鐨凢IFO,搴斿厛璋冪敤mkfifo,鍐嶆鏌ュ畠鏄惁榪斿洖EEXIST閿欒錛岃嫢榪斿洖璇ラ敊璇垯鏀逛負璋冪敤open.mkfifo銆鍛戒護涔熻兘鍒涘緩FIFO銆傚彲浠ヤ粠shell鑴氭湰鎴栧懡浠よ涓嬌鐢ㄥ畠銆傚湪鍒涘緩鍑轟竴涓狥IFO鍚庯紝瀹冨繀欏繪垨鑰呮墦寮鏉ヨ錛屾垨鑰呮墦寮鏉ュ啓錛屾墍鐢ㄧ殑鍙互鏄痮pen鍑芥暟錛屼篃鍙互鏄煇涓爣鍑咺/O鎵撳紑鍑芥暟銆侳IFO涓嶈兘鎵撳紑鏉ユ棦璇誨張鍐欙紝鍥犱負瀹冩槸鍗婂弻宸ョ殑銆傚綆¢亾鎴朏IFO鐨剋rite鎬繪槸寰鏈熬娣誨姞鏁版嵁錛屽瀹冧滑鐨剅ead鍒欐繪槸浠庡紑澶磋繑鍥炴暟鎹傚鏋滃綆¢亾鎴朏IFO璋冪敤lseek,閭e氨榪斿洖ESPIPE閿欒銆?br /><br />錛堬紦錛塒osix銆娑堟伅闃熷垪<br />娑堟伅闃熷垪鍙涓烘槸涓涓秷鎭摼琛ㄣ傛湁瓚沖鍐欐潈闄愮殑綰跨▼鍙線闃熷垪涓斁緗秷鎭紝鏈夎凍澶熻鏉冮檺鐨勭嚎紼嬪彲浠庨槦鍒椾腑鍙栬蛋娑堟伅銆傛瘡涓秷鎭兘鏄竴涓褰曪紝瀹冪敱鍙戦佽呰祴浜堜竴涓紭鍏堢駭銆傚湪鏌愪釜榪涚▼寰涓涓槦鍒楀啓鍏ユ秷鎭箣鍓嶏紝騫朵笉闇瑕佸彟澶栨煇涓繘紼嬪湪璇ラ槦鍒椾笂絳夊緟娑堟伅鐨勫埌杈俱傝繖璺熺閬撳拰FIFO鏄浉鍙嶇殑錛屽鍚庤呮潵璇達紝闄ら潪璇誨嚭鑰呭凡瀛樺湪錛屽惁鍒欏厛鏈夊啓鍏ヨ呮槸娌℃湁鎰忎箟鐨勩備竴涓繘紼嬪彲浠ュ線鏌愪釜闃熷垪鍐欏叆涓浜涙秷鎭紝鐒跺悗緇堟錛屽啀璁╁彟澶栦竴涓繘紼嬪湪浠ュ悗鏌愪釜鏃跺埢璇誨嚭榪欎簺娑堟伅銆傛秷鎭槦鍒楀叿鏈夐殢鍐呮牳鐨勬寔緇э紝榪欒窡綆¢亾鍜孎IFO涓嶄竴鏍楓侾osix娑堟伅闃熷垪鍜孲ystem V娑堟伅闃熷垪銆傝繖涓ょ粍鍑芥暟闂村瓨鍦ㄨ澶氱浉浼兼э紝浣嗕篃鏈変富瑕佺殑鍖哄埆<br />錛? 瀵筆osix娑堟伅闃熷垪鐨勮鎬繪槸榪斿洖鏈楂樹紭鍏堢駭鐨勬渶鏃╂秷鎭紝瀵筍ystem銆錛舵秷鎭槦鍒楃殑璇誨垯鍙互榪斿洖浠繪剰鎸囧畾浼樺厛綰х殑娑堟伅銆?br />錛?褰撳線涓涓┖闃熷垪鏀劇疆涓涓秷鎭椂錛孭osix銆娑堟伅闃熷垪鍏佽浜х敓涓涓俊鍙鋒垨鍚姩涓涓嚎紼嬨係ystem銆錛舵秷鎭槦鍒楀垯涓嶆彁渚涚被浼兼満鍒躲?br /><br />闃熷垪涓殑姣忎釜娑堟伅鍏鋒湁濡備笅灞炴э細<br />錛?涓涓棤絎﹀彿鏁存暟浼樺厛綰э紙Posix錛夋垨涓涓暱鏁存暟綾誨瀷(System V).<br />2.娑堟伅鐨勬暟鎹儴鍒嗛暱搴︼紙鍙互涓猴紣錛?<br />3.鏁版嵁鏈韓錛堝鏋滈暱搴﹀ぇ浜庯紣錛?br /><br />鍑芥暟鎺ュ彛<br />錛? mqd_t mq_open(const char *name,int oflag,...)<br />mq_open鍑芥暟鍒涘緩涓涓柊鐨勬秷鎭槦鍒楁垨鎵撳紑涓涓凡瀛樺湪鐨勬秷鎭槦鍒?br />錛?int mq_close(mqd_t mqdes);<br />mq_close鍑芥暟鍏抽棴涓涓秷鎭槦鍒椼?br />錛?int mq_unlink(const char *name);<br />浠庣郴緇熶腑鍒犻櫎鐢ㄤ綔絎竴涓弬鏁扮殑鏌愪釜name.<br />4. int mq_getattr(mqd_t mqdes,struct mq_attr *attr);<br />   int mq_setattr(mqd_t mqdes,const struct mq_attr *attr,struct mq_attr *oattr);<br />姣忎釜娑堟伅闃熷垪鏈夊洓涓睘鎬э紝mq_getattr榪斿洖鎵鏈夎繖浜涘睘鎬э紝mq_setattr鍒欒緗叾涓煇涓睘鎬с?br />struct mq_attr{<br />   long mq_flags;<br />   long mq_maxmsg;<br />   long mq_msgsize;<br />   long mq_curmsgs;<br />};<br /><div>5.int mq_send(mqd_t mqdes,const char *ptr,size_t len,unsigned int prio);<br />銆int mq_receive(mqd_t mqdes,char *ptr,size_t len,unsigned int *priop);<br /><div> mq_send鍑芥暟寰娑堟伅闃熷垪涓啓鍏ユ秷鎭紝mq_receive鍑芥暟浠庢秷鎭槦鍒椾腑璇誨嚭娑堟伅銆?br /><br />錛?int mq_notify(mqd_t mqdes,const struct sigevent *motification);<br />緇撴瀯浣擄細<br />union sigval{<br />    int sival_int;<br />    void *sival_ptr;<br />};<br /><br />struct sigevent<br />{<br />    int sigev_notify;<br />    int sigev_signo;<br />    union sigval sigev_value;<br />    void  (*sigev_notify_function)(union sigval);<br />    pthread_attr_t *sigev_notify_attributes;<br />};<br /></div><div>mq_notify鍑芥暟涓烘寚瀹氶槦鍒楀緩绔嬫垨鍒犻櫎寮傛浜嬩歡閫氱煡銆備竴浜涙櫘閬嶉傜敤浜庤鍑芥暟鐨勮嫢騫茶鍒?br />錛?.濡傛灉notification鍙傛暟闈炵┖錛岄偅涔堝綋鍓嶈繘紼嬪笇鏈涘湪涓涓秷鎭揪鍒版墍鎸囧畾鐨勫厛鍓嶄負絀虹殑闃熷垪鏃跺緱鍒伴氱煡銆傛垜浠"璇ヨ繘紼嬭娉ㄥ唽涓烘帴鏀惰闃熷垪鐨勯氱煡"銆?br />錛?.濡傛灉notification鍙傛暟涓虹┖鎸囬拡錛岃屼笖褰撳墠榪涚▼鐩墠琚敞鍐屼負鎺ユ敹鎵鎸囧畾闃熷垪鐨勯氱煡錛岄偅涔堝凡瀛樺湪鐨勬敞鍐屽皢琚挙閿銆?br />錛擄級.浠繪剰鏃跺埢鍙湁涓涓繘紼嬪彲浠ヨ娉ㄥ唽涓烘帴鏀舵煇涓粰瀹氶槦鍒楃殑閫氱煡銆?br />錛旓級.褰撴湁涓涓秷鎭揪鍒版煇涓厛鍓嶄負絀虹殑闃熷垪錛岃屼笖宸叉湁涓涓繘紼嬭娉ㄥ唽涓烘帴鏀惰闃熷垪鐨勯氱煡鏃訛紝鍙湁鍦ㄦ病鏈変換浣曠嚎紼嬮樆濉炲湪璇ラ槦鍒楃殑mq_receive璋冪敤涓殑鍓嶆彁涓嬶紝閫氱煡鎵嶄細鍙戝嚭銆傝繖灝辨槸璇達紝鍦╩q_receive璋冪敤涓殑闃誨姣斾換浣曢氱煡鐨勬敞鍐岄兘浼樺厛銆?br />錛曪級.褰撹閫氱煡琚彂閫佺粰瀹冪殑娉ㄥ唽榪涚▼鏃訛紝鍏舵敞鍐屽嵆琚挙閿銆傝榪涚▼蹇呴』鍐嶆璋冪敤mq_notify浠ラ噸鏂版敞鍐岋紙鎯寵鐨勮瘽錛夈?br /><br />鍙傝冿細Unix榪涚▼闂撮氫俊</div><br /></div><img src ="http://m.shnenglu.com/tankzhouqiang/aggbug/150362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tankzhouqiang/" target="_blank">鍛ㄥ己</a> 2011-07-07 02:29 <a href="http://m.shnenglu.com/tankzhouqiang/archive/2011/07/07/150362.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>linux 榪涚▼闂撮氫俊緇艱堪http://m.shnenglu.com/tankzhouqiang/archive/2011/07/04/150085.html鍛ㄥ己鍛ㄥ己Mon, 04 Jul 2011 01:58:00 GMThttp://m.shnenglu.com/tankzhouqiang/archive/2011/07/04/150085.htmlhttp://m.shnenglu.com/tankzhouqiang/comments/150085.htmlhttp://m.shnenglu.com/tankzhouqiang/archive/2011/07/04/150085.html#Feedback3http://m.shnenglu.com/tankzhouqiang/comments/commentRss/150085.htmlhttp://m.shnenglu.com/tankzhouqiang/services/trackbacks/150085.html錛?錛夋秷鎭紶閫掞紙綆¢亾錛孎IFO錛屾秷鎭槦鍒楋級
錛?錛夊悓姝ワ紙浜掓枼閿侊紝鏉′歡鍙橀噺錛岃鍐欓攣錛屼俊鍙烽噺錛?br />錛?錛夊叡浜唴瀛樺尯錛堝尶鍚嶅叡浜唴瀛樺尯錛屾湁鍚嶅叡浜唴瀛樺尯錛?br />錛?錛夎繃紼嬭皟鐢紙Solaris闂紝Sun RPC錛?br />

linux榪涚▼闂寸殑淇℃伅鍏變韓鍙互鍒嗕負
錛?錛?鍩轟簬鏂囦歡緋葷粺鐨勫叡浜?br />錛?錛?鍩轟簬鍐呮牳鐨勫叡浜?br />錛?錛?鍩轟簬鍏變韓鍐呭瓨鍖虹殑鍏變韓


IPC瀵硅薄鐨勬寔緇?br />錛?錛夐殢榪涚▼闂存寔緇殑IPC瀵硅薄涓鐩村瓨鍦ㄥ埌鎵撳紑鐫璇ュ璞$殑鏈鍚庝竴涓繘紼嬪叧闂瀵硅薄鐨勬渶鍚庝竴涓繘紼嬪叧闂瀵硅薄涓烘銆?br />錛?錛夐殢鍐呮牳鎸佺畫鐨処PC瀵硅薄涓鐩村瓨鍦ㄥ埌鍐呮牳閲嶆柊鑷婦鎴栨樉寮忓垹闄よ瀵硅薄涓烘銆?br />錛?錛夐殢鏂囦歡緋葷粺鎸佺畫鐨処PC瀵硅薄涓鐩村瓨鍦ㄥ埌鏄劇ず鍒犻櫎璇ュ璞′負姝€傚嵆浣跨郴緇熻嚜涓句簡錛岃瀵硅薄榪樻槸瀛樺湪鐨勩?br />

IPC綾誨瀷                                       鎸佺畫鎬?br />綆¢亾                                           闅忚繘紼?br />FIFO                                          闅忚繘紼?br />
Posix浜掓枼閿?nbsp;                                闅忚繘紼?br />Posix鏉′歡鍙橀噺                              闅忚繘紼?br />Posix璇誨啓閿?nbsp;                                闅忚繘紼?br />fcntl璁板綍涓婇攣                                闅忚繘紼?br />
Posix娑堟伅闃熷垪                              闅忓唴鏍?br />Posix鏈夊悕淇″彿閲?nbsp;                          闅忓唴鏍?br />Posix鍩轟簬鍐呭瓨鐨勪俊鍙烽噺                   闅忚繘紼?br />Posix鍏變韓鍐呭瓨鍖?nbsp;                          闅忓唴鏍?br />
System V娑堟伅闃熷垪                        闅忓唴鏍?br />System V淇″彿閲?nbsp;                          闅忓唴鏍?br />System V鍏變韓鍐呭瓨鍖?nbsp;                    闅忓唴鏍?br />
TCP濂楁帴瀛?nbsp;                                 闅忚繘紼?br />UDP濂楁帴瀛?nbsp;                                 闅忚繘紼?br />Unix鍩熷鎺ュ瓧                               闅忚繘紼?br />





鍚嶅瓧絀洪棿錛?br /> 褰撲袱涓垨澶氫釜鏃犱翰緙樺叧緋葷殑榪涚▼浣跨敤鏌愮綾誨瀷鐨処PC瀵硅薄鏉ュ郊姝や氦鎹俊鎭椂錛岃IPC瀵硅薄蹇呴』鏈変竴涓煇縐嶅艦寮忕殑鍚嶅瓧鎴栬呮爣璇嗙錛岃繖鏍峰叾涓竴涓繘紼嬶紙寰寰鏄湇鍔″櫒錛夊彲浠ュ垱寤鴻IPC瀵硅薄錛屽叾浣欒繘紼嬪垯鍙互鎸囧畾鍚屼竴涓狪PC瀵硅薄銆?br />
IPC綾誨瀷                        鐢ㄤ簬鎵撳紑鎴栧垱寤篒PC鐨勫悕瀛楃┖闂?nbsp;               IPC鎵撳紑鍚庣殑鏍囪瘑
綆¢亾                                     娌℃湁鍚嶅瓧                                      鎻忚堪絎?br /> FIFO                                    璺緞鍚?nbsp;                                        鎻忚堪絎?br />
Posix浜掓枼閿?nbsp;                         娌℃湁鍚嶅瓧                                      pthread_mutex_t鎸囬拡
Posix鏉′歡鍙橀噺                       娌℃湁鍚嶅瓧                                      pthread_cond_t鎸囬拡
Posix璇誨啓閿?nbsp;                         娌℃湁鍚嶅瓧                                      pthread_rwlock_t鎸囬拡
fcntl璁板綍涓婇攣                        璺緞鍚?nbsp;                                        鎻忚堪絎?br />
Posix娑堟伅闃熷垪                       Posix IPC鍚嶅瓧                              mqd_t鍊?br />Posix鏈夊悕淇″彿閲?nbsp;                   Posix IPC鍚嶅瓧                              sem_t鎸囬拡
Posix鍩轟簬鍐呭瓨鐨勪俊鍙烽噺            娌℃湁鍚嶅瓧                                     sem_t鎸囬拡
Posix鍏變韓鍐呭瓨鍖?nbsp;                   Posix IPC鍚嶅瓧                              鎻忚堪絎?br />

System V娑堟伅闃熷垪                key_t閿?nbsp;                                      System V IPC鏍囪瘑絎?br />System V 淇″彿閲?nbsp;                 key_t閿?nbsp;                                      System V IPC鏍囪瘑絎?br />System V鍏變韓鍐呭瓨鍖?nbsp;             key_t閿?                                     System V IPC 鏍囪瘑絎?br />
闂?                                     璺緞鍚?                                        鎻忚堪絎?br />sun RPC                             紼嬪簭/鐗堟湰                                     RPC鍙ユ焺

TCP濂楁帴瀛?                           IP鍦板潃涓嶵CP 绔彛                         鎻忚堪絎?br />UDP濂楁帴瀛?                          IP鍦板潃涓嶶DP绔彛                          鎻忚堪絎?br />Unix鍩熷鎺ュ瓧                        璺緞鍚?                                       鎻忚堪絎? 


鍛ㄥ己 2011-07-04 09:58 鍙戣〃璇勮
]]>
linux 瀹堟姢榪涚▼緙栧啓瑙勫垯http://m.shnenglu.com/tankzhouqiang/archive/2011/06/29/149778.html鍛ㄥ己鍛ㄥ己Wed, 29 Jun 2011 13:50:00 GMThttp://m.shnenglu.com/tankzhouqiang/archive/2011/06/29/149778.htmlhttp://m.shnenglu.com/tankzhouqiang/comments/149778.htmlhttp://m.shnenglu.com/tankzhouqiang/archive/2011/06/29/149778.html#Feedback1http://m.shnenglu.com/tankzhouqiang/comments/commentRss/149778.htmlhttp://m.shnenglu.com/tankzhouqiang/services/trackbacks/149778.htmllinux 瀹堟姢榪涚▼緙栧啓瑙勫垯
錛?錛夐鍏堣鍋氱殑鏄皟鐢╱mask灝嗘枃浠舵ā寮忓垱寤哄睆钄藉瓧璁劇疆涓?.鐢辯戶鎵垮緱鏉ョ殑鏂囦歡妯″紡鍒涘緩灞忚斀瀛楀彲鑳戒細鎷掔粷璁劇疆鏌愪簺鏉冮檺銆?br />錛?錛夎皟鐢╢ork錛岀劧鍚庝嬌鐖惰繘紼嬮鍑猴紙exit錛?榪欐牱鍋氬疄鐜頒簡涓嬮潰鍑犵偣錛氱涓錛屽鏋滆瀹堟姢榪涚▼鏄綔涓轟竴鏉$畝鍗晄hell鍛戒護鍚姩鐨勶紝閭d箞鐖惰繘紼嬬粓姝嬌寰梥hell璁や負榪欐潯鍛戒護宸茬粡鎵ц瀹屾瘯銆傜浜岋紝瀛愯繘紼嬬戶鎵夸簡鐖惰繘紼嬬殑榪涚▼緇処D,浣嗗叿鏈変竴涓柊鐨勮繘紼婭D,榪欏氨淇濊瘉浜嗗瓙榪涚▼涓嶆槸涓涓繘紼嬬粍鐨勭粍闀胯繘紼嬨傝繖瀵逛簬涓嬮潰灝辮鍋氱殑setsid璋冪敤鏄繀瑕佺殑鍓嶆彁鏉′歡銆?br />錛?錛夎皟鐢╯etsid浠ュ垱寤轟竴涓柊浼氳瘽錛屾槸璋冪敤榪涚▼錛氾紙a)鎴愪負鏂頒細璇濈殑棣栬繘紼嬶紝錛坆錛夋垚涓轟竴涓柊榪涚▼緇勭殑緇勯暱榪涚▼錛岋紙c錛夋病鏈夋帶鍒剁粓绔傚湪鏈変簺浜哄緩璁湪姝ゆ椂鍐嶆璋冪敤 fork,騫舵槸鐖惰繘紼嬬粓姝€傜浜屼釜瀛愯繘紼嬩綔涓哄畧鎶よ繘紼嬬戶緇繍琛屻傝繖鏍峰氨淇濊瘉浜嗚瀹堟姢榪涚▼涓嶆槸浼氳瘽棣栬繘紼嬨?br />錛?錛夊皢褰撳墠宸ヤ綔鐩綍鏇存敼涓烘牴鐩綍銆?br />錛?錛夊叧闂笉鍐嶉渶瑕佺殑鏂囦歡鎻忚堪絎︺傝繖浣垮畧鎶よ繘紼嬩笉鍐嶆寔鏈変粠鍏剁埗榪涚▼緇ф壙鏉ョ殑鏌愪簺鏂囦歡鎻忚堪絎︺?br />錛?錛夋煇浜涘畧鎶よ繘紼嬫墦寮/dev/null浣垮叾鍏鋒湁鏂囦歡鎻忚堪絎?錛?錛?.榪欐牱錛屼換浣曚竴涓瘯鍥捐鏍囧噯杈撳叆錛屽啓鏍囧噯杈撳嚭鎴栨爣鍑嗗嚭閿欑殑搴撲緥紼嬮兘涓嶄細浜х敓浠諱綍鏁堟灉銆?br />
鍙傝冿細UNIX鐜楂樼駭緙栫▼

鍛ㄥ己 2011-06-29 21:50 鍙戣〃璇勮
]]>
unix榪涚▼闂撮氫俊http://m.shnenglu.com/tankzhouqiang/archive/2011/04/12/144013.html鍛ㄥ己鍛ㄥ己Tue, 12 Apr 2011 03:07:00 GMThttp://m.shnenglu.com/tankzhouqiang/archive/2011/04/12/144013.htmlhttp://m.shnenglu.com/tankzhouqiang/comments/144013.htmlhttp://m.shnenglu.com/tankzhouqiang/archive/2011/04/12/144013.html#Feedback0http://m.shnenglu.com/tankzhouqiang/comments/commentRss/144013.htmlhttp://m.shnenglu.com/tankzhouqiang/services/trackbacks/144013.html錛?錛夋秷鎭紶閫掍富瑕佹湁綆¢亾錛孎IFO錛屾秷鎭槦鍒?br>錛?錛夊悓姝ヤ富瑕佹湁浜掓枼閿佷笌鏉′歡鍙橀噺錛岃鍐欓攣錛岃褰曢攣錛屼俊鍙烽噺
錛?錛夊叡浜唴瀛?br>錛?錛夎繙紼嬭皟鐢?br>


鍛ㄥ己 2011-04-12 11:07 鍙戣〃璇勮
]]>
Linux涓嬮楦戒紶涔﹀疄鐜?/title><link>http://m.shnenglu.com/tankzhouqiang/archive/2011/03/15/141915.html</link><dc:creator>鍛ㄥ己</dc:creator><author>鍛ㄥ己</author><pubDate>Tue, 15 Mar 2011 13:57:00 GMT</pubDate><guid>http://m.shnenglu.com/tankzhouqiang/archive/2011/03/15/141915.html</guid><wfw:comment>http://m.shnenglu.com/tankzhouqiang/comments/141915.html</wfw:comment><comments>http://m.shnenglu.com/tankzhouqiang/archive/2011/03/15/141915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/tankzhouqiang/comments/commentRss/141915.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/tankzhouqiang/services/trackbacks/141915.html</trackback:ping><description><![CDATA[<!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:view> <w:zoom>0</w:zoom> <w:trackmoves/> <w:trackformatting/> <w:punctuationkerning/> <w:drawinggridverticalspacing>7.8 紓?/w:drawinggridverticalspacing> <w:displayhorizontaldrawinggridevery>0</w:displayhorizontaldrawinggridevery> <w:displayverticaldrawinggridevery>2</w:displayverticaldrawinggridevery> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:saveifxmlinvalid> <w:ignoremixedcontent>false</w:ignoremixedcontent> <w:alwaysshowplaceholdertext>false</w:alwaysshowplaceholdertext> <w:donotpromoteqf/> <w:lidthemeother>EN-US</w:lidthemeother> <w:lidthemeasian>ZH-CN</w:lidthemeasian> <w:lidthemecomplexscript>X-NONE</w:lidthemecomplexscript> <w:compatibility> <w:spaceforul/> <w:balancesinglebytedoublebytewidth/> <w:donotleavebackslashalone/> <w:ultrailspace/> <w:donotexpandshiftreturn/> <w:adjustlineheightintable/> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> <w:splitpgbreakandparamark/> <w:dontvertaligncellwithsp/> <w:dontbreakconstrainedforcedtables/> <w:dontvertalignintxbx/> <w:word11kerningpairs/> <w:cachedcolbalance/> <w:usefelayout/> </w:compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:browserlevel> <m:mathpr> <m:mathfont m:val="Cambria Math"/> <m:brkbin m:val="before"/> <m:brkbinsub m:val="--"/> <m:smallfrac m:val="off"/> <m:dispdef/> <m:lmargin m:val="0"/> <m:rmargin m:val="0"/> <m:defjc m:val="centerGroup"/> <m:wrapindent m:val="1440"/> <m:intlim m:val="subSup"/> <m:narylim m:val="undOvr"/> </m:mathpr></w:worddocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" defunhidewhenused="true" DefSemiHidden="true" defqformat="false" defpriority="99" LatentStyleCount="267"> <w:lsdexception locked="false" priority="0" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Normal"/> <w:lsdexception locked="false" priority="9" semihidden="false" UnhideWhenUsed="false" qformat="true" name="heading 1"/> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"/> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"/> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"/> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"/> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"/> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"/> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"/> <w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"/> <w:lsdexception locked="false" priority="39" name="toc 1"/> <w:lsdexception locked="false" priority="39" name="toc 2"/> <w:lsdexception locked="false" priority="39" name="toc 3"/> <w:lsdexception locked="false" priority="39" name="toc 4"/> <w:lsdexception locked="false" priority="39" name="toc 5"/> <w:lsdexception locked="false" priority="39" name="toc 6"/> <w:lsdexception locked="false" priority="39" name="toc 7"/> <w:lsdexception locked="false" priority="39" name="toc 8"/> <w:lsdexception locked="false" priority="39" name="toc 9"/> <w:lsdexception locked="false" priority="35" qformat="true" name="caption"/> <w:lsdexception locked="false" priority="10" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Title"/> <w:lsdexception locked="false" priority="1" name="Default Paragraph Font"/> <w:lsdexception locked="false" priority="11" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Subtitle"/> <w:lsdexception locked="false" priority="22" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Strong"/> <w:lsdexception locked="false" priority="20" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Emphasis"/> <w:lsdexception locked="false" priority="59" semihidden="false" UnhideWhenUsed="false" name="Table Grid"/> <w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"/> <w:lsdexception locked="false" priority="1" semihidden="false" UnhideWhenUsed="false" qformat="true" name="No Spacing"/> <w:lsdexception locked="false" priority="60" semihidden="false" UnhideWhenUsed="false" name="Light Shading"/> <w:lsdexception locked="false" priority="61" semihidden="false" UnhideWhenUsed="false" name="Light List"/> <w:lsdexception locked="false" priority="62" semihidden="false" UnhideWhenUsed="false" name="Light Grid"/> <w:lsdexception locked="false" priority="63" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 1"/> <w:lsdexception locked="false" priority="64" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 2"/> <w:lsdexception locked="false" priority="65" semihidden="false" UnhideWhenUsed="false" name="Medium List 1"/> <w:lsdexception locked="false" priority="66" semihidden="false" UnhideWhenUsed="false" name="Medium List 2"/> <w:lsdexception locked="false" priority="67" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 1"/> <w:lsdexception locked="false" priority="68" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 2"/> <w:lsdexception locked="false" priority="69" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 3"/> <w:lsdexception locked="false" priority="70" semihidden="false" UnhideWhenUsed="false" name="Dark List"/> <w:lsdexception locked="false" priority="71" semihidden="false" UnhideWhenUsed="false" name="Colorful Shading"/> <w:lsdexception locked="false" priority="72" semihidden="false" UnhideWhenUsed="false" name="Colorful List"/> <w:lsdexception locked="false" priority="73" semihidden="false" UnhideWhenUsed="false" name="Colorful Grid"/> <w:lsdexception locked="false" priority="60" semihidden="false" UnhideWhenUsed="false" name="Light Shading Accent 1"/> <w:lsdexception locked="false" priority="61" semihidden="false" UnhideWhenUsed="false" name="Light List Accent 1"/> <w:lsdexception locked="false" priority="62" semihidden="false" UnhideWhenUsed="false" name="Light Grid Accent 1"/> <w:lsdexception locked="false" priority="63" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 1 Accent 1"/> <w:lsdexception locked="false" priority="64" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 2 Accent 1"/> <w:lsdexception locked="false" priority="65" semihidden="false" UnhideWhenUsed="false" name="Medium List 1 Accent 1"/> <w:lsdexception locked="false" unhidewhenused="false" name="Revision"/> <w:lsdexception locked="false" priority="34" semihidden="false" UnhideWhenUsed="false" qformat="true" name="List Paragraph"/> <w:lsdexception locked="false" priority="29" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Quote"/> <w:lsdexception locked="false" priority="30" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Intense Quote"/> <w:lsdexception locked="false" priority="66" semihidden="false" UnhideWhenUsed="false" name="Medium List 2 Accent 1"/> <w:lsdexception locked="false" priority="67" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 1 Accent 1"/> <w:lsdexception locked="false" priority="68" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 2 Accent 1"/> <w:lsdexception locked="false" priority="69" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 3 Accent 1"/> <w:lsdexception locked="false" priority="70" semihidden="false" UnhideWhenUsed="false" name="Dark List Accent 1"/> <w:lsdexception locked="false" priority="71" semihidden="false" UnhideWhenUsed="false" name="Colorful Shading Accent 1"/> <w:lsdexception locked="false" priority="72" semihidden="false" UnhideWhenUsed="false" name="Colorful List Accent 1"/> <w:lsdexception locked="false" priority="73" semihidden="false" UnhideWhenUsed="false" name="Colorful Grid Accent 1"/> <w:lsdexception locked="false" priority="60" semihidden="false" UnhideWhenUsed="false" name="Light Shading Accent 2"/> <w:lsdexception locked="false" priority="61" semihidden="false" UnhideWhenUsed="false" name="Light List Accent 2"/> <w:lsdexception locked="false" priority="62" semihidden="false" UnhideWhenUsed="false" name="Light Grid Accent 2"/> <w:lsdexception locked="false" priority="63" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 1 Accent 2"/> <w:lsdexception locked="false" priority="64" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 2 Accent 2"/> <w:lsdexception locked="false" priority="65" semihidden="false" UnhideWhenUsed="false" name="Medium List 1 Accent 2"/> <w:lsdexception locked="false" priority="66" semihidden="false" UnhideWhenUsed="false" name="Medium List 2 Accent 2"/> <w:lsdexception locked="false" priority="67" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 1 Accent 2"/> <w:lsdexception locked="false" priority="68" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 2 Accent 2"/> <w:lsdexception locked="false" priority="69" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 3 Accent 2"/> <w:lsdexception locked="false" priority="70" semihidden="false" UnhideWhenUsed="false" name="Dark List Accent 2"/> <w:lsdexception locked="false" priority="71" semihidden="false" UnhideWhenUsed="false" name="Colorful Shading Accent 2"/> <w:lsdexception locked="false" priority="72" semihidden="false" UnhideWhenUsed="false" name="Colorful List Accent 2"/> <w:lsdexception locked="false" priority="73" semihidden="false" UnhideWhenUsed="false" name="Colorful Grid Accent 2"/> <w:lsdexception locked="false" priority="60" semihidden="false" UnhideWhenUsed="false" name="Light Shading Accent 3"/> <w:lsdexception locked="false" priority="61" semihidden="false" UnhideWhenUsed="false" name="Light List Accent 3"/> <w:lsdexception locked="false" priority="62" semihidden="false" UnhideWhenUsed="false" name="Light Grid Accent 3"/> <w:lsdexception locked="false" priority="63" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 1 Accent 3"/> <w:lsdexception locked="false" priority="64" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 2 Accent 3"/> <w:lsdexception locked="false" priority="65" semihidden="false" UnhideWhenUsed="false" name="Medium List 1 Accent 3"/> <w:lsdexception locked="false" priority="66" semihidden="false" UnhideWhenUsed="false" name="Medium List 2 Accent 3"/> <w:lsdexception locked="false" priority="67" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 1 Accent 3"/> <w:lsdexception locked="false" priority="68" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 2 Accent 3"/> <w:lsdexception locked="false" priority="69" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 3 Accent 3"/> <w:lsdexception locked="false" priority="70" semihidden="false" UnhideWhenUsed="false" name="Dark List Accent 3"/> <w:lsdexception locked="false" priority="71" semihidden="false" UnhideWhenUsed="false" name="Colorful Shading Accent 3"/> <w:lsdexception locked="false" priority="72" semihidden="false" UnhideWhenUsed="false" name="Colorful List Accent 3"/> <w:lsdexception locked="false" priority="73" semihidden="false" UnhideWhenUsed="false" name="Colorful Grid Accent 3"/> <w:lsdexception locked="false" priority="60" semihidden="false" UnhideWhenUsed="false" name="Light Shading Accent 4"/> <w:lsdexception locked="false" priority="61" semihidden="false" UnhideWhenUsed="false" name="Light List Accent 4"/> <w:lsdexception locked="false" priority="62" semihidden="false" UnhideWhenUsed="false" name="Light Grid Accent 4"/> <w:lsdexception locked="false" priority="63" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 1 Accent 4"/> <w:lsdexception locked="false" priority="64" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 2 Accent 4"/> <w:lsdexception locked="false" priority="65" semihidden="false" UnhideWhenUsed="false" name="Medium List 1 Accent 4"/> <w:lsdexception locked="false" priority="66" semihidden="false" UnhideWhenUsed="false" name="Medium List 2 Accent 4"/> <w:lsdexception locked="false" priority="67" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 1 Accent 4"/> <w:lsdexception locked="false" priority="68" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 2 Accent 4"/> <w:lsdexception locked="false" priority="69" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 3 Accent 4"/> <w:lsdexception locked="false" priority="70" semihidden="false" UnhideWhenUsed="false" name="Dark List Accent 4"/> <w:lsdexception locked="false" priority="71" semihidden="false" UnhideWhenUsed="false" name="Colorful Shading Accent 4"/> <w:lsdexception locked="false" priority="72" semihidden="false" UnhideWhenUsed="false" name="Colorful List Accent 4"/> <w:lsdexception locked="false" priority="73" semihidden="false" UnhideWhenUsed="false" name="Colorful Grid Accent 4"/> <w:lsdexception locked="false" priority="60" semihidden="false" UnhideWhenUsed="false" name="Light Shading Accent 5"/> <w:lsdexception locked="false" priority="61" semihidden="false" UnhideWhenUsed="false" name="Light List Accent 5"/> <w:lsdexception locked="false" priority="62" semihidden="false" UnhideWhenUsed="false" name="Light Grid Accent 5"/> <w:lsdexception locked="false" priority="63" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 1 Accent 5"/> <w:lsdexception locked="false" priority="64" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 2 Accent 5"/> <w:lsdexception locked="false" priority="65" semihidden="false" UnhideWhenUsed="false" name="Medium List 1 Accent 5"/> <w:lsdexception locked="false" priority="66" semihidden="false" UnhideWhenUsed="false" name="Medium List 2 Accent 5"/> <w:lsdexception locked="false" priority="67" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 1 Accent 5"/> <w:lsdexception locked="false" priority="68" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 2 Accent 5"/> <w:lsdexception locked="false" priority="69" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 3 Accent 5"/> <w:lsdexception locked="false" priority="70" semihidden="false" UnhideWhenUsed="false" name="Dark List Accent 5"/> <w:lsdexception locked="false" priority="71" semihidden="false" UnhideWhenUsed="false" name="Colorful Shading Accent 5"/> <w:lsdexception locked="false" priority="72" semihidden="false" UnhideWhenUsed="false" name="Colorful List Accent 5"/> <w:lsdexception locked="false" priority="73" semihidden="false" UnhideWhenUsed="false" name="Colorful Grid Accent 5"/> <w:lsdexception locked="false" priority="60" semihidden="false" UnhideWhenUsed="false" name="Light Shading Accent 6"/> <w:lsdexception locked="false" priority="61" semihidden="false" UnhideWhenUsed="false" name="Light List Accent 6"/> <w:lsdexception locked="false" priority="62" semihidden="false" UnhideWhenUsed="false" name="Light Grid Accent 6"/> <w:lsdexception locked="false" priority="63" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 1 Accent 6"/> <w:lsdexception locked="false" priority="64" semihidden="false" UnhideWhenUsed="false" name="Medium Shading 2 Accent 6"/> <w:lsdexception locked="false" priority="65" semihidden="false" UnhideWhenUsed="false" name="Medium List 1 Accent 6"/> <w:lsdexception locked="false" priority="66" semihidden="false" UnhideWhenUsed="false" name="Medium List 2 Accent 6"/> <w:lsdexception locked="false" priority="67" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 1 Accent 6"/> <w:lsdexception locked="false" priority="68" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 2 Accent 6"/> <w:lsdexception locked="false" priority="69" semihidden="false" UnhideWhenUsed="false" name="Medium Grid 3 Accent 6"/> <w:lsdexception locked="false" priority="70" semihidden="false" UnhideWhenUsed="false" name="Dark List Accent 6"/> <w:lsdexception locked="false" priority="71" semihidden="false" UnhideWhenUsed="false" name="Colorful Shading Accent 6"/> <w:lsdexception locked="false" priority="72" semihidden="false" UnhideWhenUsed="false" name="Colorful List Accent 6"/> <w:lsdexception locked="false" priority="73" semihidden="false" UnhideWhenUsed="false" name="Colorful Grid Accent 6"/> <w:lsdexception locked="false" priority="19" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Subtle Emphasis"/> <w:lsdexception locked="false" priority="21" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Intense Emphasis"/> <w:lsdexception locked="false" priority="31" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Subtle Reference"/> <w:lsdexception locked="false" priority="32" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Intense Reference"/> <w:lsdexception locked="false" priority="33" semihidden="false" UnhideWhenUsed="false" qformat="true" name="Book Title"/> <w:lsdexception locked="false" priority="37" name="Bibliography"/> <w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"/> </w:latentstyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:鏅氳〃鏍? mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:瀹嬩綋; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} </style> <![endif]--> <p class="MsoPlainText"><span lang="EN-US">Linux </span><span>涓嬮楦戒紶涔﹁璁″疄鐜?span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span lang="EN-US">1.</span><span>緋葷粺鍔熻兘<span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span>鏍規(guī)嵁椋為附浼犱功鍗忚鍦?span lang="EN-US"> linux </span>涓嬪疄鐜伴楦戒紶杈撶▼搴?span lang="EN-US">,</span>騫朵笖涓?span lang="EN-US"> windows </span>涓嬮楦藉吋瀹廣傚叿浣撳姛鑳芥ā鍧楀寘鎷敤鎴蜂笂綰?span lang="EN-US">,</span>涓嬬嚎<span lang="EN-US">,</span>鍒鋒柊鏌ョ湅鍦ㄧ嚎鐢ㄦ埛<span lang="EN-US">,</span>鏀跺彂娑堟伅<span lang="EN-US">,</span>浼犻佹枃浠?span lang="EN-US">/</span>鏂囦歡澶瑰姛鑳芥ā鍧椼?span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">2.</span><span>鍏蜂綋瀹炵幇<span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span lang="EN-US">2.1 </span><span>鍏抽敭鏁版嵁緇撴瀯<span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span lang="EN-US">/*</span><span>鍛戒護鐨勭粨鏋?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">typedef struct _command</span></p> <p class="MsoPlainText"><span lang="EN-US"> {</span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>int version;/*</span><span>鍛戒護鐨勭増鏈?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>int seq;/*</span><span>鍖呯紪鍙?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>char srcName[100];/*</span><span>鍙戦佽呭鍚?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>char srcHost[100];/*</span><span>鍙戦佽呬富鏈哄悕<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>int flag;/*</span><span>鍛戒護<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>char addtion[100];/*</span><span>闄勫姞瀛楁<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"> }command;</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">/*</span><span>鍦ㄧ嚎鐢ㄦ埛淇℃伅<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">typedef struct _userInfo</span></p> <p class="MsoPlainText"><span lang="EN-US">{</span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>char name[MAXLINE];<span>     </span>/*</span><span>濮撳悕<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>char host[MAXLINE];<span>         </span>/*</span><span>涓繪満鍚?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>char group[MAXLINE];<span>        </span>/*</span><span>鎵鍦ㄧ殑緇勫悕<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>struct sockaddr_in addr;<span>        </span>/*</span><span>鍦板潃淇℃伅<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>struct _userInfo next;<span>      </span>/*</span><span>閾捐〃涓笅涓涓?span lang="EN-US">*/ </span></span></p> <p class="MsoPlainText"><span lang="EN-US">}userInfo;</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">/*</span><span>鍦ㄧ嚎鐢ㄦ埛鍒楄〃<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">typedef struct _uList</span></p> <p class="MsoPlainText"><span lang="EN-US">{</span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>userInfo *userListHead;<span>     </span>/*</span><span>閾捐〃澶?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>userInfo userListTail;<span>      </span>/*</span><span>閾捐〃灝?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">}uList;</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">/*</span><span>娑堟伅闃熷垪<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">typedef struct _mesList</span></p> <p class="MsoPlainText"><span lang="EN-US">{</span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>command *mesHead;</span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span>command *mesTail;</span></p> <p class="MsoPlainText"><span lang="EN-US">}mesList;</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">2.2 </span><span>紼嬪簭涓昏緇撴瀯<span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span>鏈▼搴忎富瑕侀噰鐢ㄥ綰跨▼緇撴瀯<span lang="EN-US">,</span>鍒嗕負<span lang="EN-US"> receive(</span>鎺ユ敹娑堟伅<span lang="EN-US">), process(</span>澶勭悊鏀跺埌鐨勬秷鎭?span lang="EN-US">), sendData(</span>鍙戦佹枃浠?span lang="EN-US">) </span>涓変釜瀛愮嚎紼嬨傜嚎紼嬮棿閫氫俊浜掓枼閿佷笌<span lang="EN-US"> Posix </span>淇″彿閲忚繘琛岄氫俊銆?span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span lang="EN-US"><br></span><span lang="EN-US"></span></p> <p class="MsoPlainText"><span lang="EN-US">2.3 </span><span>鍑芥暟鎺ュ彛<span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span lang="EN-US">(1) /*</span><span>浠庢枃浠舵弿榪扮<span lang="EN-US">fd</span>涓鍙?span lang="EN-US">count</span>涓瓧絎﹀瓨鍏?span lang="EN-US">buf</span>涓?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span> </span>ssize_t readn(int fd,void *buf,size_t count)</span><span>錛?span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(2) /*</span><span>灝?span lang="EN-US">buf</span>鎵鎸囧悜鐨勫瓨鍌ㄥ尯涓殑<span lang="EN-US">len</span>涓瓧絎﹀惛鍏ユ枃浠舵弿榪扮<span lang="EN-US">fd</span>涓?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span> </span>ssize_t writen(int fd,char *buf,int len);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(3) /*</span><span>鐢ㄤ簬瀛楃涓茶漿鎹?span lang="EN-US">,</span>緗戠粶浼犺緭涓敤<span lang="EN-US">gb2312</span>緙栫爜錛?span lang="EN-US">linux</span>涓?span lang="EN-US">gtk</span>鐢?span lang="EN-US">utf-8</span>緙栫爜錛岄渶瑕佽繘琛岃漿鎹?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span> </span>int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(4) /*</span><span>鍦ㄧ敤鎴烽摼琛ㄤ腑鍔犲叆鏂扮敤鎴蜂俊鎭紝鍔犲叆鎴愬姛榪斿洖<span lang="EN-US">1</span>錛屽惁鍒欒繑鍥?span lang="EN-US">0,</span>浣跨敤<span lang="EN-US">userInfoMutex</span>榪涜綰跨▼闂撮氫俊鎺у埗<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>  </span>int pushBack(uList *list,userInfo user);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(5) /*</span><span>鍦ㄧ敤鎴烽摼琛ㄤ腑鍒犻櫎鎸囧畾鍦板潃淇℃伅鐨勭敤鎴鳳紝鍒犻櫎鎴愬姛鍚庤繑鍥?span lang="EN-US">1</span>錛屽惁鍒欒繑鍥?span lang="EN-US">0</span>錛屼嬌鐢?span lang="EN-US">userInfoMutex</span>榪涜綰跨▼闂存帶鍒?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span>  </span>int delUser(uList *list, struct sockaddr_in addr);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(6) /*</span><span>鍒ゆ柇璇ョ敤鎴鋒槸鍚﹀凡緇忓瓨鍦紝宸茬粡瀛樺湪鍒欒繑鍥?span lang="EN-US">1</span>錛屽惁鍒欒繑鍥?span lang="EN-US">0,</span>浣跨敤<span lang="EN-US">userInfoMutex</span>榪涜綰跨▼闂存帶鍒?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">int isExist(uList *list,struct sockaddr_in addr);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(7)</span><span>娓呯┖鐢ㄦ埛閾捐〃錛岄噴鏀劇┖闂達紝鐢ㄤ簬鐢ㄦ埛閫鍑哄拰鐢ㄦ埛鍒鋒柊鏃墮噴鏀劇┖闂?span lang="EN-US">,</span>浣跨敤<span lang="EN-US">userInfoMutex</span>榪涜綰跨▼闂存帶鍒?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">int destroyList(uList *list);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(8)/*</span><span>鍒涘緩鍛戒護瀛?span lang="EN-US">,com</span>涓鴻榪斿洖鐨勫懡浠ゅ瓧<span lang="EN-US">,flag </span>涓烘秷鎭爣蹇?span lang="EN-US">,addtion </span>涓洪檮鍔犳爣蹇?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void createCmd(command & com,int flag,char addtion[])</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(9)/*</span><span>鍙戦佹秷鎭紝<span lang="EN-US">com</span>涓鴻鍙戦佺殑娑堟伅錛?span lang="EN-US">servaddr</span>涓鴻鍙戦佺殑鍦板潃錛?span lang="EN-US">attach</span>涓烘枃浠墮檮浠朵俊鎭?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">void sendCmd(command com, struct sockaddr_in servaddr,char attach[]);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(10) /*</span><span>鎶婃敹鍒扮殑娑堟伅鍔犲叆鍒版秷鎭槦鍒椾腑<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void addMes(mesList *mHead,command cmd);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(11) /*</span><span>鎶婃秷鎭槦鍒椾腑澶撮儴鐨勮妭鐐規(guī)秷鎭彁鍙栧嚭鏉ョ敤浜庡鐞?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">int delMes(mesList *mHead,command *cmd);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(12)/*</span><span>鍒濆鍖栨搷浣滐紝椋為附鐧誨綍鏃跺垵濮嬪寲娑堟伅閾捐〃錛岀敤鎴烽摼琛紝淇″彿閲忥紝濂楁帴瀛椾俊鎭?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span> </span>void init();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(13)/*</span><span>鐧誨綍鎿嶄綔<span lang="EN-US">,</span>鍙戦佺敤鎴蜂笂綰挎秷鎭?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void login();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(14)/*</span><span>瑙f瀽鏀跺埌鐨勬秷鎭懡浠わ紝鎻愬彇鍚勪釜瀛楁<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span> </span>int analysisCmd(command *cmd,char *buf);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(15) /*</span><span>鎺ユ敹娑堟伅綰跨▼澶勭悊鍑芥暟<span lang="EN-US">,</span>灝嗘敹鍒扮殑娑堟伅鍔犲叆娑堟伅闃熷垪涓紝閫氳繃淇″彿閲?span lang="EN-US">waitNoFull</span>鍜?span lang="EN-US">waitNoEmpty</span>鍜屾秷鎭鐞嗙嚎紼嬭繘琛岄氫俊銆傛秷鎭槦鍒楃敤<span lang="EN-US">mesMutex</span>涓庡叾浠栫嚎紼嬭繘琛岄氫俊錛屼繚璇佹秷鎭槦鍒楃殑姝g‘鎬?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US"><span> </span>void *receive(void *arg);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(16)/*gtk</span><span>鐣岄潰涓樉紺哄湪綰跨敤鎴蜂俊鎭?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void showUser(uList *list);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(17)/*</span><span>鍦?span lang="EN-US">gtk</span>鐣岄潰涓樉紺烘秷鎭?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void showMessage(char *message);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(18)/*</span><span>鏄劇ず鏀跺埌鐨勪俊鎭?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void showRecvMessage(char *host,char *message);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(19)/*</span><span>鍒嗘瀽鏂囦歡鐨勪俊鎭紝鎻愬彇鏈夌敤鐨勫瓧孌?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void fileAnalysis(char *recv,int *fNum,char *fName,int *fSize,int *fTime,int *fType);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(20) /*</span><span>淇濆瓨鏀跺埌鐨勫崟涓枃浠?span lang="EN-US">,saveName</span>涓轟繚瀛樼殑鏂囦歡鍚?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void saveSignalFile(char *saveName);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(21)/*</span><span>鍒嗘瀽鐩綍闄勪歡錛岃幏寰楃洰褰曟枃浠剁殑鏂囦歡鍚嶏紝鏂囦歡澶у皬錛屾枃浠剁被鍨?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void getDirInfo(char *recv,char *fName,int *fSize,int *fType);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(22) /*</span><span>淇濆瓨鐩綍<span lang="EN-US">,saveName</span>涓鴻淇濆瓨鐨勭洰褰?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void saveDir(char *saveName);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(23)/*</span><span>淇濆瓨鏂囦歡<span lang="EN-US">,recvType=1</span>涓轟繚瀛樻枃浠訛紝<span lang="EN-US">recvType=2</span>涓轟繚瀛樼殑鐩綍<span lang="EN-US">,</span>浣跨敤<span lang="EN-US">fileMutex</span>鏉ヨ緗簰鏂ユ?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void saveFile();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(24)/*</span><span>鏀跺埌鍗曚釜鏂囦歡<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void receiveSignalFile(char *recvFileName);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(25)/*</span><span>鏀跺埌鍗曚釜鐩綍<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void receiveDir(char *recvDirName);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(26)/*</span><span>鎺ユ敹鏂囦歡<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void receiveFile(command cmd);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(27)/*</span><span>淇″彿澶勭悊綰跨▼<span lang="EN-US">,</span>浠庢秷鎭槦鍒椾腑鍙栧嚭娑堟伅榪涜澶勭悊<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void *process(void *arg);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(28)/*</span><span>鍙戦佹秷鎭?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">int sendMes();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(29) /*</span><span>灝嗘枃浠跺悕榪涜杞崲<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">char *transName(char *fileName);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(30)/*</span><span>鍙戦佹枃浠?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void sendFile();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(31)/*</span><span>鍙戦佹枃浠跺す<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void sendDir();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(32)/*</span><span>鐢ㄦ埛鐐瑰嚮鍒鋒柊<span lang="EN-US">,</span>鍒鋒柊鍦ㄧ嚎鐢ㄦ埛<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void refresh();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(33) /*</span><span>鐢ㄦ埛閫鍑?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void quit();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(34)/*</span><span>浼犺緭鏂囦歡澶規(guī)暟鎹紝閫掑綊鍑芥暟<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void transferDir(int fd,char *dir);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(35)/*</span><span>鐩戝惉<span lang="EN-US">TCP</span>濂楁帴鍙o紝鍙戦佹枃浠朵笌鏂囦歡澶圭嚎紼?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">void *sendData(void *arg);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(36)/*</span><span>鍒涘緩鑿滃崟<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">static void create_popup_menu(GtkWidget *menu,GtkWidget *view);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(37)/*</span><span>鍙沖嚮閫変腑<span lang="EN-US">treeview,</span>鏄劇ず浼犻佹枃浠朵笌鏂囦歡澶硅彍鍗?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">static gboolean showTreeView(GtkWidget *eventBox,GdkEventButton *event,GtkWidget *menu);</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(38)/*</span><span>閫夋嫨瑕佸彂閫佺殑鏂囦歡<span lang="EN-US"> */</span></span></p> <p class="MsoPlainText"><span lang="EN-US">static void selectFile();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(39)/*</span><span>閫夋嫨瑕佸彂閫佺殑鏂囦歡澶?span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">static void selectDir();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">(40)/*</span><span>閫夋嫨瑕佷繚瀛樼殑鏂囦歡鍚嶆垨鏂囦歡澶瑰悕<span lang="EN-US">*/</span></span></p> <p class="MsoPlainText"><span lang="EN-US">static void selectSaveFile();</span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US">3.</span><span>鎬葷粨<span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US"><span>    </span></span><span>瀹炵幇浜?span lang="EN-US">linux</span>涓嬮楦戒紶涔︾殑鍩烘湰鍔熻兘錛屽茍涓旇兘涓?span lang="EN-US">window</span>涓嬮楦借繘琛岄氫俊錛屼紶鏂囦歡銆傜啛鎮(zhèn)変簡<span lang="EN-US">linux</span>涓嬬綉緇滅紪紼嬶紝澶氱嚎紼嬬紪紼嬪強綰跨▼闂撮氫俊錛堜富瑕佺敤鍒頒俊鍙烽噺涓庝簰鏂ラ攣錛夈備絾鍔犲瘑瑙e瘑閭e潡娌℃湁瀹屾垚錛岀▼搴忕粨鏋勪笉鏄緢濂斤紝鐣岄潰鍋氬緱澶樊銆傛湁絀哄簲璇ョ湅鐪嬭璁℃ā寮?span lang="EN-US">.</span></span></p> <p class="MsoPlainText">鐣岄潰鎴浘錛堢晫闈㈡瘮杈冨瀮鍦?錛?/p> <p class="MsoPlainText"><img src="http://m.shnenglu.com/images/cppblog_com/tankzhouqiang/Screenshot.png" border="0"><br><span><span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span><span lang="EN-US">闄勶細</span></span></p> <p class="MsoPlainText"><span><span lang="EN-US">椋為附鍗忚錛?http://bbs.chinaunix.net/viewthread.php?tid=1015775<br></span></span></p> <p class="MsoPlainText"><span> <span lang="EN-US"></span></span></p> <p class="MsoPlainText"><span lang="EN-US"><br></span><span lang="EN-US"></span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoPlainText"><span lang="EN-US"> </span></p> <p class="MsoNormal"><span lang="EN-US"> </span></p><img src ="http://m.shnenglu.com/tankzhouqiang/aggbug/141915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/tankzhouqiang/" target="_blank">鍛ㄥ己</a> 2011-03-15 21:57 <a href="http://m.shnenglu.com/tankzhouqiang/archive/2011/03/15/141915.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://javliabary.com" target="_blank">亚洲已满18点击进入久久</a>| <a href="http://aa224.com" target="_blank">黄色成人av网站</a>| <a href="http://989766.com" target="_blank">一区二区欧美在线</a>| <a href="http://5917t.com" target="_blank">亚洲日本电影</a>| <a href="http://eee88888.com" target="_blank">欧美激情精品久久久久久黑人</a>| <a href="http://26mmmm.com" target="_blank">久久久久国产一区二区</a>| <a href="http://jm-comic3.com" target="_blank">久久精品99</a>| <a href="http://cechi8.com" target="_blank">免费在线成人</a>| <a href="http://p5555ww.com" target="_blank">亚洲精品欧美在线</a>| <a href="http://www92994.com" target="_blank">亚洲女女女同性video</a>| <a href="http://596361.com" target="_blank">午夜亚洲一区</a>| <a href="http://tristooges.com" target="_blank">裸体一区二区</a>| <a href="http://123086.com" target="_blank">国产精品久久福利</a>| <a href="http://www47011.com" target="_blank">国内精品一区二区</a>| <a href="http://seyuav4.com" target="_blank">日韩视频精品</a>| <a href="http://6u6uuu666.com" target="_blank">午夜日本精品</a>| <a href="http://papala4444.com" target="_blank">久热精品视频在线</a>| <a href="http://300618.com" target="_blank">欧美成人精品一区二区三区</a>| <a href="http://yw1396.com" target="_blank">亚洲国产天堂久久综合</a>| <a href="http://wwww76.com" target="_blank">99视频在线精品国自产拍免费观看</a>| <a href="http://www-82622.com" target="_blank">亚洲一区二区三区在线</a>| <a href="http://vod3366.com" target="_blank">欧美伊人久久久久久久久影院</a>| <a href="http://zuan3344.com" target="_blank">久久精品一区二区三区不卡</a>| <a href="http://www4848xx.com" target="_blank">欧美成人午夜视频</a>| <a href="http://bjzgmember.com" target="_blank">欧美极品色图</a>| <a href="http://bdkaoyan.com" target="_blank">国产一区二区三区的电影 </a>| <a href="http://kk5551.com" target="_blank">永久免费毛片在线播放不卡</a>| <a href="http://actskynet.com" target="_blank">伊人婷婷久久</a>| <a href="http://yzxq520.com" target="_blank">午夜国产精品影院在线观看</a>| <a href="http://52sougou.com" target="_blank">久久久精品五月天</a>| <a href="http://missav88.com" target="_blank">亚洲毛片在线观看.</a>| <a href="http://df7166.com" target="_blank">久久精品首页</a>| <a href="http://y9z8.com" target="_blank">国产精品香蕉在线观看</a>| <a href="http://ccnn33.com" target="_blank">9国产精品视频</a>| <a href="http://3dpasion.com" target="_blank">欧美不卡高清</a>| <a href="http://xtsjjw.com" target="_blank">午夜一区二区三区不卡视频</a>| <a href="http://www-78733.com" target="_blank">欧美精品www</a>| <a href="http://021-job.com" target="_blank">影音先锋久久久</a>| <a href="http://497n.com" target="_blank">久久gogo国模裸体人体</a>| <a href="http://430390.com" target="_blank">在线视频日韩</a>| <a href="http://283575.com" target="_blank">欧美成人午夜剧场免费观看</a>| <a href="http://nebnb89.com" target="_blank">国产一区二区三区奇米久涩 </a>| <a href="http://91ymz.com" target="_blank">久久久久国产精品一区二区</a>| <a href="http://607032.com" target="_blank">欧美三级乱码</a>| <a href="http://alex-bruni.com" target="_blank">亚洲国产视频一区</a>| <a href="http://5mcm.com" target="_blank">久久综合久色欧美综合狠狠 </a>| <a href="http://012488.com" target="_blank">久久精品一区二区</a>| <a href="http://4y9k.com" target="_blank">国产精品入口尤物</a>| <a href="http://ridenimbus.com" target="_blank">亚洲欧洲精品一区二区三区</a>| <a href="http://6677ch.com" target="_blank">久久精品视频在线看</a>| <a href="http://456888com.com" target="_blank">日韩午夜电影av</a>| <a href="http://8eya.com" target="_blank">免费亚洲电影在线观看</a>| <a href="http://www-6410c.com" target="_blank">国产视频久久久久</a>| <a href="http://www-67499.com" target="_blank">亚洲一区免费观看</a>| <a href="http://987gqb.com" target="_blank">日韩一级精品视频在线观看</a>| <a href="http://ffff53.com" target="_blank">欧美在线首页</a>| <a href="http://5xxm.com" target="_blank">国产精品中文在线</a>| <a href="http://894322.com" target="_blank">久久精品国产免费观看</a>| <a href="http://tavbao.com" target="_blank">一区二区三区色</a>| <a href="http://yzsss.com" target="_blank">欧美精品v国产精品v日韩精品</a>| <a href="http://www559955.com" target="_blank">国精品一区二区三区</a>| <a href="http://hankanzhan.com" target="_blank">欧美一级片在线播放</a>| <a href="http://kanebocos.com" target="_blank">亚洲午夜日本在线观看</a>| <a href="http://zuan3344.com" target="_blank">国产精品久久久久免费a∨大胸</a>| <a href="http://5mcm.com" target="_blank">一本色道久久综合亚洲精品小说 </a>| <a href="http://1235656.com" target="_blank">欧美在线视频一区</a>| <a href="http://dv6699.com" target="_blank">国产欧美日韩综合一区在线观看</a>| <a href="http://767296.com" target="_blank">一区二区欧美在线</a>| <a href="http://www-544778.com" target="_blank">日韩视频不卡</a>| <a href="http://126900.com" target="_blank">欧美日本一区二区三区</a>| <a href="http://029902.com" target="_blank">99视频精品免费观看</a>| <a href="http://7776701.com" target="_blank">欧美激情一区二区三区全黄</a>| <a href="http://bnb-gndc.com" target="_blank">久久综合99re88久久爱</a>| <a href="http://9a9u.com" target="_blank">亚洲精品美女91</a>| <a href="http://301110.com" target="_blank">91久久国产综合久久</a>| <a href="http://shyihegu.com" target="_blank">牛人盗摄一区二区三区视频</a>| <a href="http://www-216678.com" target="_blank">在线欧美一区</a>| <a href="http://y66776.com" target="_blank">欧美凹凸一区二区三区视频</a>| <a href="http://www-888593.com" target="_blank">欧美a级片网</a>| <a href="http://91nbs.com" target="_blank">亚洲免费综合</a>| <a href="http://szxrdr.com" target="_blank">欧美中日韩免费视频</a>| <a href="http://360695.com" target="_blank">亚洲片国产一区一级在线观看</a>| <a href="http://778kb.com" target="_blank">亚洲精华国产欧美</a>| <a href="http://esdzu.com" target="_blank">国产精品自在线</a>| <a href="http://580078.com" target="_blank">欧美v日韩v国产v</a>| <a href="http://cechi8.com" target="_blank">欧美特黄一区</a>| <a href="http://www47011.com" target="_blank">免费欧美日韩</a>| <a href="http://ju5556.com" target="_blank">欧美午夜精品久久久久久人妖 </a>| <a href="http://2343ww.com" target="_blank">欧美国产日韩一区二区三区</a>| <a href="http://zqx186.com" target="_blank">亚洲私人影院</a>| <a href="http://y9z8.com" target="_blank">久久人91精品久久久久久不卡</a>| <a href="http://xunlei520.com" target="_blank">亚洲日韩视频</a>| <a href="http://98956888.com" target="_blank">午夜影视日本亚洲欧洲精品</a>| <a href="http://743627.com" target="_blank">亚洲精品视频免费观看</a>| <a href="http://300618.com" target="_blank">久久五月婷婷丁香社区</a>| <a href="http://123273.com" target="_blank">米奇777超碰欧美日韩亚洲</a>| <a href="http://qhzyxcd.com" target="_blank">一区二区久久久久</a>| <a href="http://cdcpt.com" target="_blank">校园春色国产精品</a>| <a href="http://zhouqie.com" target="_blank">日韩一级在线</a>| <a href="http://dsjgqc.com" target="_blank">欧美在线观看视频一区二区</a>| <a href="http://777888789.com" target="_blank">亚洲美女中文字幕</a>| <a href="http://74w4.com" target="_blank">久久精品卡一</a>| <a href="http://5773000.com" target="_blank">亚洲午夜精品</a>| <a href="http://xiaoyaer.com" target="_blank">免费欧美视频</a>| <a href="http://660507jj.com" target="_blank">久久久久久婷</a>| <a href="http://4c7175.com" target="_blank">国产精品美女在线观看</a>| <a href="http://110673.com" target="_blank">亚洲国产裸拍裸体视频在线观看乱了</a>| <a href="http://nmbgbc.com" target="_blank">国产精品视频观看</a>| <a href="http://077229.com" target="_blank">亚洲狼人精品一区二区三区</a>| <a href="http://zgslwtc.com" target="_blank">有坂深雪在线一区</a>| <a href="http://hh474.com" target="_blank">欧美一区在线视频</a>| <a href="http://kedou09.com" target="_blank">亚洲综合首页</a>| <a href="http://817794.com" target="_blank">欧美激情第一页xxx</a>| <a href="http://wanyoulipin.com" target="_blank">久久影音先锋</a>| <a href="http://jnhrjixie.com" target="_blank">国产亚洲aⅴaaaaaa毛片</a>| <a href="http://337105.com" target="_blank">在线视频精品一区</a>| <a href="http://xian369.com" target="_blank">亚洲精品视频一区</a>| <a href="http://ccc159.com" target="_blank">久久天堂国产精品</a>| <a href="http://894322.com" target="_blank">久久久国产一区二区三区</a>| <a href="http://iietao.com" target="_blank">国产精品国产精品国产专区不蜜</a>| <a href="http://yyy922.com" target="_blank">欧美激情精品久久久久</a>| <a href="http://7c3e.com" target="_blank">韩国欧美国产1区</a>| <a href="http://j88866.com" target="_blank">午夜精品福利视频</a>| <a href="http://dd8uau0ncu.com" target="_blank">亚洲自拍三区</a>| <a href="http://1000078.com" target="_blank">欧美性感一类影片在线播放</a>| <a href="http://596361.com" target="_blank">亚洲精品国产精品国产自</a>| <a href="http://qqkanp.com" target="_blank">亚洲国产小视频在线观看</a>| <a href="http://ju5556.com" target="_blank">久久久精品一品道一区</a>| <a href="http://bbww55.com" target="_blank">久久久久久久久久久一区</a>| <a href="http://012492.com" target="_blank">国产免费成人av</a>| <a href="http://tareandshare.com" target="_blank">亚洲免费在线观看</a>| <a href="http://hankanzhan.com" target="_blank">亚洲在线视频观看</a>| <a href="http://ziwufuren.com" target="_blank">欧美午夜片欧美片在线观看</a>| <a href="http://888ppxx.com" target="_blank">亚洲另类视频</a>| <a href="http://hhh246.com" target="_blank">亚洲综合久久久久</a>| <a href="http://ttmitch.com" target="_blank">国产精品播放</a>| <a href="http://hnjlhgw.com" target="_blank">亚洲视频在线观看一区</a>| <a href="http://xxxx90.com" target="_blank">亚洲在线黄色</a>| <a href="http://339254.com" target="_blank">国产精品尤物福利片在线观看</a>| <a href="http://essuee.com" target="_blank">亚洲视频一区二区</a>| <a href="http://wwwavtb1122.com" target="_blank">亚洲欧美电影院</a>| <a href="http://wxtarena.com" target="_blank">国产精品国产馆在线真实露脸 </a>| <a href="http://4080sy.com" target="_blank">**欧美日韩vr在线</a>| <a href="http://ae262.com" target="_blank">久久大逼视频</a>| <a href="http://smdzs.com" target="_blank">久久久99久久精品女同性</a>| <a href="http://www-119049.com" target="_blank">国产噜噜噜噜噜久久久久久久久 </a>| <a href="http://3737520.com" target="_blank">久久久久久久久久久一区 </a>| <a href="http://bosengame.com" target="_blank">亚洲精品中文字幕在线</a>| <a href="http://7269003.com" target="_blank">午夜久久久久久</a>| <a href="http://7171152.com" target="_blank">亚洲主播在线观看</a>| <a href="http://88488848.com" target="_blank">国产精品白丝jk黑袜喷水</a>| <a href="http://jzsp87.com" target="_blank">亚洲一区二区网站</a>| <a href="http://www-24333.com" target="_blank">欧美制服丝袜第一页</a>| <a href="http://62san.com" target="_blank">欧美一区二区三区在线</a>| <a href="http://354eee.com" target="_blank">欧美系列一区</a>| <a href="http://6399128.com" target="_blank">午夜电影亚洲</a>| <a href="http://9a9u.com" target="_blank">欧美96在线丨欧</a>| <a href="http://74va.com" target="_blank">日韩视频在线免费</a>| <a href="http://universehb.com" target="_blank">欧美午夜美女看片</a>| <a href="http://ategpu.com" target="_blank">香蕉成人啪国产精品视频综合网</a>| <a href="http://chongpiapia.com" target="_blank">久久黄色网页</a>| <a href="http://kanebocos.com" target="_blank">亚洲啪啪91</a>| <a href="http://erosgems.com" target="_blank">国产精品久久久久久久一区探花 </a>| <a href="http://anquye16.com" target="_blank">一区二区三区免费在线观看</a>| <a href="http://caihongie.com" target="_blank">欧美午夜精品久久久久免费视</a>| <a href="http://yjdm139.com" target="_blank">亚洲欧美日韩国产成人精品影院</a>| <a href="http://xianqyd.com" target="_blank">久久人人爽人人爽爽久久</a>| <a href="http://www18998.com" target="_blank">亚洲激情一区</a>| <a href="http://www-222304.com" target="_blank">欧美涩涩网站</a>| <a href="http://xyyssa.com" target="_blank">欧美在线亚洲在线</a>| <a href="http://www789yys.com" target="_blank">91久久精品网</a>| <a href="http://ndr666.com" target="_blank">欧美在线在线</a>| <a href="http://www-e2222.com" target="_blank">99国产精品久久久久久久</a>| <a href="http://44368com.com" target="_blank">国产九九精品</a>| <a href="http://8880850.com" target="_blank">欧美母乳在线</a>| <a href="http://497n.com" target="_blank">久久久777</a>| <a href="http://cnm24.com" target="_blank">在线亚洲高清视频</a>| <a href="http://9906w.com" target="_blank">欧美成人精品在线视频</a>| <a href="http://kissgz.com" target="_blank">亚洲尤物视频网</a>| <a href="http://6222h.com" target="_blank">亚洲人成在线影院</a>| <a href="http://cczm4.com" target="_blank">国产一区二区三区视频在线观看</a>| <a href="http://017455.com" target="_blank">欧美极品一区</a>| <a href="http://alio-ai.com" target="_blank">久久免费一区</a>| <a href="http://www-401313.com" target="_blank">亚洲宅男天堂在线观看无病毒</a>| <a href="http://123lifenet.com" target="_blank">老司机一区二区</a>| <a href="http://bgflee.com" target="_blank">午夜久久久久久</a>| <a href="http://sauske.com" target="_blank">日韩视频中文</a>| <a href="http://fangsling.com" target="_blank">在线播放日韩</a>| <a href="http://kakatok.com" target="_blank">国产精品色一区二区三区</a>| <a href="http://gjjlzs.com" target="_blank">欧美国产免费</a>| <a href="http://papala4444.com" target="_blank">久久久久久久久久久成人</a>| <a href="http://wwwmiya118.com" target="_blank">亚洲欧美国产日韩中文字幕</a>| <a href="http://5mcm.com" target="_blank">亚洲精品一区二区三区蜜桃久 </a>| <a href="http://imaben.com" target="_blank">性xx色xx综合久久久xx</a>| <a href="http://270909.com" target="_blank">亚洲精品之草原avav久久</a>| <a href="http://www11111111.com" target="_blank">国内精品久久久久影院优</a>| <a href="http://755795.com" target="_blank">国产精品久久久久久久第一福利</a>| <a href="http://a718sx.com" target="_blank">欧美成年人视频</a>| <a href="http://92y5.com" target="_blank">久久夜色精品国产欧美乱极品</a>| <a href="http://bizhijidi.com" target="_blank">欧美一区二区视频在线观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>