锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产69国产精品亚洲,久久久久香蕉视频,人妻精品久久久久中文字幕69http://www.shnenglu.com/bujiwu/category/9219.htmlzh-cnThu, 29 Apr 2010 16:39:51 GMTThu, 29 Apr 2010 16:39:51 GMT60[杞澆]top鍛戒護璇﹁Вhttp://www.shnenglu.com/bujiwu/archive/2010/04/27/top.htmlbujiwubujiwuTue, 27 Apr 2010 05:26:00 GMThttp://www.shnenglu.com/bujiwu/archive/2010/04/27/top.htmlhttp://www.shnenglu.com/bujiwu/comments/113700.htmlhttp://www.shnenglu.com/bujiwu/archive/2010/04/27/top.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/113700.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/113700.htmlhttp://blog.chinaunix.net/u/12973/showart_637900.html


top鍛戒護鏄疞inux涓嬪父鐢ㄧ殑鎬ц兘鍒嗘瀽宸ュ叿錛岃兘澶熷疄鏃舵樉紺虹郴緇熶腑鍚勪釜榪涚▼鐨勮祫婧愬崰鐢ㄧ姸鍐碉紝綾諱技浜嶹indows鐨勪換鍔$鐞嗗櫒銆備笅闈㈣緇嗕粙緇嶅畠鐨勪嬌鐢ㄦ柟娉曘?

top - 01:06:48 up  1:22,  1 user,  load average: 0.06, 0.60, 0.48
Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3% us,  1.0% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    191272k total,   173656k used,    17616k free,    22052k buffers
Swap:   192772k total,        0k used,   192772k free,   123988k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  1379 root      16   0  7976 2456 1980 S  0.7  1.3   0:11.03 sshd
14704 root      16   0  2128  980  796 R  0.7  0.5   0:02.72 top
     1 root      16   0  1992  632  544 S  0.0  0.3   0:00.90 init
     2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0

緇熻淇℃伅鍖?/h4>

鍓嶄簲琛屾槸緋葷粺鏁翠綋鐨勭粺璁′俊鎭傜涓琛屾槸浠誨姟闃熷垪淇℃伅錛屽悓 uptime 鍛戒護鐨勬墽琛岀粨鏋溿傚叾鍐呭濡備笅錛?/p>

01:06:48 褰撳墠鏃墮棿
up 1:22 緋葷粺榪愯鏃墮棿錛屾牸寮忎負鏃?鍒?/td>
1 user 褰撳墠鐧誨綍鐢ㄦ埛鏁?/td>
load average: 0.06, 0.60, 0.48 緋葷粺璐熻澆錛屽嵆浠誨姟闃熷垪鐨勫鉤鍧囬暱搴︺?br> 涓変釜鏁板煎垎鍒負 1鍒嗛挓銆?鍒嗛挓銆?5鍒嗛挓鍓嶅埌鐜板湪鐨勫鉤鍧囧箋?/td>

絎簩銆佷笁琛屼負榪涚▼鍜孋PU鐨勪俊鎭傚綋鏈夊涓狢PU鏃訛紝榪欎簺鍐呭鍙兘浼氳秴榪囦袱琛屻傚唴瀹瑰涓嬶細

Tasks: 29 total 榪涚▼鎬繪暟
1 running 姝e湪榪愯鐨勮繘紼嬫暟
28 sleeping 鐫$湢鐨勮繘紼嬫暟
0 stopped 鍋滄鐨勮繘紼嬫暟
0 zombie 鍍靛案榪涚▼鏁?/td>
Cpu(s): 0.3% us 鐢ㄦ埛絀洪棿鍗犵敤CPU鐧懼垎姣?/td>
1.0% sy 鍐呮牳絀洪棿鍗犵敤CPU鐧懼垎姣?/td>
0.0% ni 鐢ㄦ埛榪涚▼絀洪棿鍐呮敼鍙樿繃浼樺厛綰х殑榪涚▼鍗犵敤CPU鐧懼垎姣?/td>
98.7% id 絀洪棽CPU鐧懼垎姣?/td>
0.0% wa 絳夊緟杈撳叆杈撳嚭鐨凜PU鏃墮棿鐧懼垎姣?/td>
0.0% hi  
0.0% si  

鏈鍚庝袱琛屼負鍐呭瓨淇℃伅銆傚唴瀹瑰涓嬶細

Mem: 191272k total 鐗╃悊鍐呭瓨鎬婚噺
173656k used 浣跨敤鐨勭墿鐞嗗唴瀛樻婚噺
17616k free 絀洪棽鍐呭瓨鎬婚噺
22052k buffers 鐢ㄤ綔鍐呮牳緙撳瓨鐨勫唴瀛橀噺
Swap: 192772k total 浜ゆ崲鍖烘婚噺
0k used 浣跨敤鐨勪氦鎹㈠尯鎬婚噺
192772k free 絀洪棽浜ゆ崲鍖烘婚噺
123988k cached 緙撳啿鐨勪氦鎹㈠尯鎬婚噺銆?br> 鍐呭瓨涓殑鍐呭琚崲鍑哄埌浜ゆ崲鍖猴紝鑰屽悗鍙堣鎹㈠叆鍒板唴瀛橈紝浣嗕嬌鐢ㄨ繃鐨勪氦鎹㈠尯灝氭湭琚鐩栵紝
璇ユ暟鍊煎嵆涓鴻繖浜?strong>鍐呭宸插瓨鍦ㄤ簬鍐呭瓨涓?/strong>鐨勪氦鎹㈠尯鐨勫ぇ灝忋?br> 鐩稿簲鐨勫唴瀛樺啀嬈¤鎹㈠嚭鏃跺彲涓嶅繀鍐嶅浜ゆ崲鍖哄啓鍏ャ?/td>

榪涚▼淇℃伅鍖?/h4>

緇熻淇℃伅鍖哄煙鐨勪笅鏂規樉紺轟簡鍚勪釜榪涚▼鐨勮緇嗕俊鎭傞鍏堟潵璁よ瘑涓涓嬪悇鍒楃殑鍚箟銆?/p>

搴忓彿 鍒楀悕 鍚箟
a PID 榪涚▼id
b PPID 鐖惰繘紼媔d
c RUSER Real user name
d UID 榪涚▼鎵鏈夎呯殑鐢ㄦ埛id
e USER 榪涚▼鎵鏈夎呯殑鐢ㄦ埛鍚?/td>
f GROUP 榪涚▼鎵鏈夎呯殑緇勫悕
g TTY 鍚姩榪涚▼鐨勭粓绔悕銆備笉鏄粠緇堢鍚姩鐨勮繘紼嬪垯鏄劇ず涓??
h PR 浼樺厛綰?/td>
i NI nice鍊箋傝礋鍊艱〃紺洪珮浼樺厛綰э紝姝e艱〃紺轟綆浼樺厛綰?/td>
j P 鏈鍚庝嬌鐢ㄧ殑CPU錛屼粎鍦ㄥCPU鐜涓嬫湁鎰忎箟
k %CPU 涓婃鏇存柊鍒扮幇鍦ㄧ殑CPU鏃墮棿鍗犵敤鐧懼垎姣?/td>
l TIME 榪涚▼浣跨敤鐨凜PU鏃墮棿鎬昏錛屽崟浣嶇
m TIME+ 榪涚▼浣跨敤鐨凜PU鏃墮棿鎬昏錛屽崟浣?/100縐?/td>
n %MEM 榪涚▼浣跨敤鐨?strong>鐗╃悊鍐呭瓨鐧懼垎姣?/td>
o VIRT 榪涚▼浣跨敤鐨勮櫄鎷熷唴瀛樻婚噺錛屽崟浣峩b銆俈IRT=SWAP+RES
p SWAP 榪涚▼浣跨敤鐨勮櫄鎷熷唴瀛樹腑錛岃鎹㈠嚭鐨勫ぇ灝忥紝鍗曚綅kb銆?/td>
q RES 榪涚▼浣跨敤鐨勩佹湭琚崲鍑虹殑鐗╃悊鍐呭瓨澶у皬錛屽崟浣峩b銆俁ES=CODE+DATA
r CODE 鍙墽琛屼唬鐮佸崰鐢ㄧ殑鐗╃悊鍐呭瓨澶у皬錛屽崟浣峩b
s DATA 鍙墽琛屼唬鐮佷互澶栫殑閮ㄥ垎(鏁版嵁孌?鏍?鍗犵敤鐨?strong>鐗╃悊鍐? 瀛樺ぇ灝忥紝鍗曚綅kb
t SHR 鍏變韓鍐呭瓨澶у皬錛屽崟浣峩b
u nFLT 欏甸潰閿欒嬈℃暟
v nDRT 鏈鍚庝竴嬈″啓鍏ュ埌鐜板湪錛岃淇敼榪囩殑欏甸潰鏁般?/td>
w S 榪涚▼鐘舵併?br> D=涓嶅彲涓柇鐨勭潯鐪犵姸鎬?br> R=榪愯
S=鐫$湢
T=璺熻釜/鍋滄
Z=鍍靛案榪涚▼
x COMMAND 鍛戒護鍚?鍛戒護琛?/td>
y WCHAN 鑻ヨ榪涚▼鍦ㄧ潯鐪狅紝鍒欐樉紺虹潯鐪犱腑鐨勭郴緇熷嚱鏁板悕
z Flags 浠誨姟鏍囧織錛屽弬鑰?sched.h

榛樿鎯呭喌涓嬩粎鏄劇ず姣旇緝閲嶈鐨?PID銆乁SER銆丳R銆丯I銆乂IRT銆丷ES銆丼HR銆丼銆?CPU銆?MEM銆乀IME+銆丆OMMAND 鍒椼傚彲浠ラ氳繃涓嬮潰鐨勫揩鎹烽敭鏉ユ洿鏀規樉紺哄唴瀹廣?/p>

鏇存敼鏄劇ず鍐呭

閫氳繃 f 閿彲浠ラ夋嫨鏄劇ず鐨勫唴瀹廣傛寜 f 閿箣鍚庝細鏄劇ず鍒楃殑鍒楄〃錛屾寜 a-z 鍗沖彲鏄劇ず鎴栭殣钘忓搴旂殑鍒楋紝鏈鍚庢寜鍥炶濺閿‘瀹氥?/p>

鎸?o 閿彲浠ユ敼鍙樺垪鐨勬樉紺洪『搴忋傛寜灝忓啓鐨?a-z 鍙互灝嗙浉搴旂殑鍒楀悜鍙崇Щ鍔紝鑰屽ぇ鍐欑殑 A-Z 鍙互灝嗙浉搴旂殑鍒楀悜宸︾Щ鍔ㄣ傛渶鍚庢寜鍥炶濺閿‘瀹氥?/p>

鎸夊ぇ鍐欑殑 F 鎴?O 閿紝鐒跺悗鎸?a-z 鍙互灝嗚繘紼嬫寜鐓х浉搴旂殑鍒楄繘琛屾帓搴忋傝屽ぇ鍐欑殑 R 閿彲浠ュ皢褰撳墠鐨勬帓搴忓掕漿銆?/p>

鍛戒護浣跨敤

1錛?宸ュ叿錛堝懡浠わ級鍚嶇О
top
2錛庡伐鍏鳳紙鍛戒護錛変綔鐢?br> 鏄劇ず緋葷粺褰撳墠鐨勮繘紼嬪拰鍏朵粬鐘跺喌錛? top鏄竴涓姩鎬佹樉紺鴻繃紼?鍗沖彲浠ラ氳繃鐢ㄦ埛鎸夐敭鏉ヤ笉鏂埛鏂板綋鍓嶇姸鎬?濡傛灉鍦ㄥ墠鍙版墽琛岃鍛戒護,瀹冨皢鐙崰鍓嶅彴,鐩村埌鐢ㄦ埛緇堟璇ョ▼搴忎負姝? 姣旇緝鍑嗙‘鐨勮,top鍛戒護鎻愪緵浜嗗疄鏃剁殑瀵圭郴緇熷鐞嗗櫒鐨勭姸鎬佺洃瑙?瀹冨皢鏄劇ず緋葷粺涓瑿PU鏈“鏁忔劅”鐨勪換鍔″垪琛?璇ュ懡浠ゅ彲浠ユ寜CPU浣跨敤.鍐呭瓨浣跨敤鍜屾墽琛屾椂闂? 瀵逛換鍔¤繘琛屾帓搴忥紱鑰屼笖璇ュ懡浠ょ殑寰堝鐗規ч兘鍙互閫氳繃浜や簰寮忓懡浠ゆ垨鑰呭湪涓漢瀹氬埗鏂囦歡涓繘琛岃瀹?
3錛庣幆澧冭緗?br> 鍦↙inux涓嬩嬌鐢ㄣ?br> 4錛庝嬌鐢ㄦ柟娉?br> 4錛?浣跨敤鏍煎紡
top [-] [d] [p] [q] [c] [C] [S] [s]  [n]
4錛?鍙傛暟璇存槑
 d 鎸囧畾姣忎袱嬈″睆騫曚俊鎭埛鏂頒箣闂寸殑鏃墮棿闂撮殧銆傚綋鐒剁敤鎴峰彲浠ヤ嬌鐢╯浜や簰鍛戒護鏉ユ敼鍙樹箣銆?br>  p 閫氳繃鎸囧畾鐩戞帶榪涚▼ID鏉ヤ粎浠呯洃鎺ф煇涓繘紼嬬殑鐘舵併?br>  q璇ラ夐」灝嗕嬌top娌℃湁浠諱綍寤惰繜鐨勮繘琛屽埛鏂般傚鏋滆皟鐢ㄧ▼搴忔湁瓚呯駭鐢ㄦ埛鏉冮檺錛岄偅涔坱op灝嗕互 灝藉彲鑳介珮鐨勪紭鍏堢駭榪愯銆?br>  S 鎸囧畾绱妯″紡
 s 浣縯op鍛戒護鍦ㄥ畨鍏ㄦā寮忎腑榪愯銆傝繖灝嗗幓闄や氦浜掑懡浠ゆ墍甯︽潵鐨勬綔鍦ㄥ嵄闄┿?br>  i  浣縯op涓嶆樉紺轟換浣曢棽緗垨鑰呭兊姝昏繘紼嬨?br>  c  鏄劇ず鏁翠釜鍛戒護琛岃屼笉鍙槸鏄劇ず鍛戒護鍚?br> 4.3鍏朵粬
涓嬮潰浠嬬粛鍦╰op鍛戒護鎵ц榪囩▼涓彲浠ヤ嬌鐢ㄧ殑涓浜涗氦浜掑懡浠ゃ備粠浣跨敤瑙掑害鏉ョ湅錛岀啛緇冪殑鎺屾彙榪欎簺鍛戒護姣旀帉鎻¢夐」榪橀噸瑕佷竴浜涖傝繖浜涘懡浠ら兘鏄崟瀛楁瘝鐨勶紝濡傛灉鍦ㄥ懡 浠よ閫夐」涓嬌鐢ㄤ簡s閫夐」錛屽垯鍙兘鍏朵腑涓浜涘懡浠や細琚睆钄芥帀銆?br> Ctrl+L 鎿﹂櫎騫朵笖閲嶅啓灞忓箷銆?br> h鎴栬? 鏄劇ず甯姪鐢婚潰錛岀粰鍑轟竴浜涚畝鐭殑鍛戒護鎬葷粨璇存槑銆?br> k 緇堟涓涓繘紼嬨傜郴緇熷皢鎻愮ず鐢ㄦ埛杈撳叆闇瑕佺粓姝㈢殑榪涚▼PID錛屼互鍙婇渶瑕佸彂閫佺粰璇ヨ繘紼嬩粈涔堟牱鐨勪俊鍙楓備竴鑸殑緇堟榪涚▼鍙互浣跨敤15淇″彿錛涘鏋滀笉鑳芥甯哥粨鏉熼偅灝變嬌鐢? 淇″彿9寮哄埗緇撴潫璇ヨ繘紼嬨傞粯璁ゅ兼槸淇″彿15銆傚湪瀹夊叏妯″紡涓鍛戒護琚睆钄姐?br> i 蹇界暐闂茬疆鍜屽兊姝昏繘紼嬨傝繖鏄竴涓紑鍏沖紡鍛戒護銆?br> q 閫鍑虹▼搴忋?br> r 閲嶆柊瀹夋帓涓涓繘紼嬬殑浼樺厛綰у埆銆傜郴緇熸彁紺虹敤鎴瘋緭鍏ラ渶瑕佹敼鍙樼殑榪涚▼PID浠ュ強闇瑕佽緗殑 榪涚▼浼樺厛綰у箋傝緭鍏ヤ竴涓鍊煎皢浣夸紭鍏堢駭闄嶄綆錛屽弽涔嬪垯鍙互浣胯榪涚▼鎷ユ湁鏇撮珮鐨勪紭鍏堟潈銆傞粯璁ゅ兼槸10銆?br> S 鍒囨崲鍒扮瘡璁℃ā寮忋?br> s 鏀瑰彉涓ゆ鍒鋒柊涔嬮棿鐨勫歡榪熸椂闂淬傜郴緇熷皢鎻愮ず鐢ㄦ埛杈撳叆鏂扮殑鏃墮棿錛屽崟浣嶄負s銆傚鏋滄湁灝忔暟錛? 灝辨崲綆楁垚m s銆傝緭鍏?鍊煎垯緋葷粺灝嗕笉鏂埛鏂幫紝榛樿鍊兼槸5 s銆傞渶瑕佹敞鎰忕殑鏄鏋滆緗お灝忕殑鏃墮棿錛屽緢鍙兘浼氬紩璧蜂笉鏂埛鏂幫紝浠庤屾牴鏈潵涓嶅強鐪嬫竻鏄劇ず鐨勬儏鍐碉紝鑰屼笖緋葷粺璐熻澆涔熶細澶уぇ澧炲姞銆?br> f鎴栬匜 浠庡綋鍓嶆樉紺轟腑娣誨姞鎴栬呭垹闄ら」鐩?br> o鎴栬匫 鏀瑰彉鏄劇ず欏圭洰鐨勯『搴忋?br> l 鍒囨崲鏄劇ず騫沖潎璐熻澆鍜屽惎鍔ㄦ椂闂翠俊鎭?br> m 鍒囨崲鏄劇ず鍐呭瓨淇℃伅銆?br> t 鍒囨崲鏄劇ず榪涚▼鍜孋PU鐘舵佷俊鎭?br> c 鍒囨崲鏄劇ず鍛戒護鍚嶇О鍜屽畬鏁村懡浠よ銆?br> 銆M 鏍規嵁椹葷暀鍐呭瓨澶у皬榪涜鎺掑簭銆?br> P 鏍規嵁CPU浣跨敤鐧懼垎姣斿ぇ灝忚繘琛屾帓搴忋?br> T 鏍規嵁鏃墮棿/绱鏃墮棿榪涜鎺掑簭銆?br>     W 灝嗗綋鍓嶈緗啓鍏/.toprc鏂囦歡涓傝繖鏄啓top閰嶇疆鏂囦歡鐨勬帹鑽愭柟娉曘?/span>





bujiwu 2010-04-27 13:26 鍙戣〃璇勮
]]>
Unix Network Programming - Vol2 璇諱功絎旇(Chapter 9. Record Locking)http://www.shnenglu.com/bujiwu/archive/2009/12/18/103474.htmlbujiwubujiwuFri, 18 Dec 2009 07:57:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/12/18/103474.htmlhttp://www.shnenglu.com/bujiwu/comments/103474.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/12/18/103474.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/103474.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/103474.html
#include <sys/types.h>
#include 
<errno.h>
#include 
<fcntl.h>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<unistd.h>

#define FILE_PATH   "LockFile.txt"
#define MAXLINE     4096    /* max text line length */
#define FILE_MODE   (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)

int LockSet(int fd, int Type)
{
    
struct flock lock;

    
lock.l_type = Type;        /* F_RDLCK, F_WRLCK, F_UNLCK */
    
lock.l_start = 0;          /* byte offset, relative to l_whence */
    
lock.l_whence = SEEK_END;  /* SEEK_SET, SEEK_CUR, SEEK_END */
    
lock.l_len = 0;            /* #bytes (0 means to EOF) */

    
return fcntl( fd, F_SETLK, &lock);
}

int main(int argc, char **argv)
{
    
char line[MAXLINE] = {0};

    
int fd = open(FILE_PATH, O_RDWR | O_CREAT| O_APPEND , FILE_MODE);

    
if ( LockSet(fd, F_WRLCK) < 0 )
    {
        
if (errno == EACCES || errno == EAGAIN)
        {
            printf(
"This program has running!\n");
            close(fd);
        }
        
else
        {
            printf(
"call fcntl function error.%s\n", strerror(errno) );
        }

        exit(
1);
    }

    printf(
"lock file [%s] successful\n", FILE_PATH);

    snprintf(line, 
sizeof(line), "%ld\n", (long) getpid());

    lseek(fd, 
0, SEEK_END);
    write(fd, line, strlen(line));

    getchar();

    
if ( LockSet(fd, F_UNLCK) < 0 )
    {
        printf(
"call fcntl function error.%s\n", strerror(errno) );
    }

    close(fd);

    
return 0;
}
http://www.shnenglu.com/Files/bujiwu/RecordLocking.rar



bujiwu 2009-12-18 15:57 鍙戣〃璇勮
]]>
semaphore淇″彿瀛︿範絎旇http://www.shnenglu.com/bujiwu/archive/2009/11/17/101190.htmlbujiwubujiwuTue, 17 Nov 2009 05:28:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/11/17/101190.htmlhttp://www.shnenglu.com/bujiwu/comments/101190.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/11/17/101190.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/101190.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/101190.htmlsem_init()
sem_destroy()
sem_post()
sem_wait()

//g++ -o semaphore semaphore.cpp  -lpthread
#include <semaphore.h>
#include 
<errno.h>
#include 
<unistd.h>
#include 
<pthread.h>
#include 
<stdlib.h>
#include 
<stdio.h>
#include 
<string.h>
#include 
"ThreadMutex.h"

#define MAXSIZE 10

sem_t g_sem_max;
sem_t g_sem_zero;

CThreadMutex g_mutex;

int g_count = 0;

int sem_wait_i(sem_t* psem)
{
    
int rv = 0;
   
    
while ( 0 != ( rv = sem_wait(psem) ) )
    {
        
if ( errno == EINTR )
        {
            
continue;
        }
        
else
        {
            printf(
"sem_wait %s\n", strerror(errno) );
            
break;
        }
    }

    
return rv;
}

void* producer_thread(void* Parameter)
{
    
whiletrue )
    {
        sleep(
2);

        
if( sem_wait_i(&g_sem_max) != 0 )
        {
            
break;
        }

        g_mutex.Lock();

        g_count
++;

        printf(
"Producer=%d\n", g_count);

        sem_post(
&g_sem_zero);

        g_mutex.UnLock();
    }

    
return NULL;
}

void* consumer_thread(void* Parameter)
{
    
whiletrue )
    {
        sleep(
3);

        
if( sem_wait_i(&g_sem_zero) != 0 )
        {
            
break;
        }

        g_mutex.Lock();

        g_count
--;

        printf(
"Consumer=%d\n", g_count);

        sem_post(
&g_sem_max);

        g_mutex.UnLock();
    }

    
return NULL;
}

int main(int argc, char* argv[])
{
    
if ( sem_init(&g_sem_zero, 00!= 0 )
    {
        printf(
"sem_init %s\n", strerror(errno) );

        
return -1;
    }

    
if ( sem_init(&g_sem_max, 0, MAXSIZE) != 0 )
    {
        printf(
"sem_init %s\n", strerror(errno) );

        
return -1;
    }

    pthread_t pro_thread;
    pthread_t sum_thread;

    
if ( pthread_create( &sum_thread, NULL, consumer_thread, NULL) != 0 )
    {
        printf(
"pthread_create%s\n", strerror(errno) );

        
return -1;
    }

    
if ( pthread_create( &pro_thread, NULL, producer_thread, NULL) != 0 )
    {
        printf(
"pthread_create%s\n", strerror(errno) );

        
return -1;
    }
    
    
if ( pthread_join(pro_thread, NULL) != 0 )
    {
        printf(
"pthread_join %s\n", strerror(errno) );

        
return -1;
    }

    
if ( pthread_join(sum_thread, NULL) != 0 )
    {
        printf(
"pthread_join %s\n", strerror(errno) );

        
return -1;
    }

    sem_destroy(
&g_sem_zero);
    sem_destroy(
&g_sem_max);

    
return 0;
}
http://www.shnenglu.com/Files/bujiwu/semaphore.rar



bujiwu 2009-11-17 13:28 鍙戣〃璇勮
]]>
setitimer鍑芥暟浣跨敤絎旇http://www.shnenglu.com/bujiwu/archive/2009/11/16/101061.htmlbujiwubujiwuMon, 16 Nov 2009 05:50:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/11/16/101061.htmlhttp://www.shnenglu.com/bujiwu/comments/101061.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/11/16/101061.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/101061.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/101061.html鍑芥暟鍘熷瀷 int setitimer(int which, const struct itimerval *value,
                     struct itimerval *ovalue);

DESCRIPTION
       The  system  provides each process with three interval timers, each decrementing in a distinct time domain.  When any timer expires, a
       signal is sent to the process, and the timer (potentially) restarts.

       ITIMER_REAL    decrements in real time, and delivers SIGALRM upon expiration.

       ITIMER_VIRTUAL decrements only when the process is executing, and delivers SIGVTALRM upon expiration.

       ITIMER_PROF    decrements both when the process executes and when the system is executing on behalf  of  the  process.   Coupled  with
                      ITIMER_VIRTUAL, this timer is usually used to profile the time spent by the application in user and kernel space.  SIG-
                      PROF is delivered upon expiration.

       Timer values are defined by the following structures:

            struct itimerval {
                struct timeval it_interval; /* next value */
                struct timeval it_value;    /* current value */
            };
            struct timeval {
                long tv_sec;                /* seconds */
                long tv_usec;               /* microseconds */
            };

#include <stdio.h>
#include 
<unistd.h>
#include 
<signal.h>
#include 
<string.h>
#include 
<sys/time.h>
#include 
<errno.h>

void PrintMsg(int Num)
{
    printf(
"%s\n""Hello World");

    
return;
}

int main(int argc, char* argv[])
{
    signal(SIGALRM, PrintMsg);

    
struct itimerval tick;
    tick.it_value.tv_sec 
= 10;  //鍗佺閽熷悗灝嗗惎鍔ㄥ畾鏃跺櫒
    tick.it_value.tv_usec = 0;
    tick.it_interval.tv_sec  
=1//瀹氭椂鍣ㄥ惎鍔ㄥ悗錛屾瘡闅?縐掑皢鎵ц鐩稿簲鐨勫嚱鏁?/span>
    tick.it_interval.tv_usec = 0;

    
//setitimer灝嗚Е鍙慡IGALRM淇″彿
    int ret = setitimer(ITIMER_REAL, &tick, NULL);

    
if ( ret != 0)
    {
        printf(
"Set timer error. %s \n", strerror(errno) );

        
return -1;
    }

    printf(
"Wait!\n");

    getchar();

    
return 0;
}



bujiwu 2009-11-16 13:50 鍙戣〃璇勮
]]>
pthread_mutex_t灝佽http://www.shnenglu.com/bujiwu/archive/2009/11/08/pthread_mutex.htmlbujiwubujiwuSun, 08 Nov 2009 12:57:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/11/08/pthread_mutex.htmlhttp://www.shnenglu.com/bujiwu/comments/100413.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/11/08/pthread_mutex.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/100413.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/100413.html
//Mutex.cpp
#include 
<pthread.h>
#include 
<iostream>
using namespace std;

class ThreadMutex
{
public:
    ThreadMutex()
    {
        pthread_mutex_init(
&mtx, NULL);
    }
    
    
~ThreadMutex()
    {
        pthread_mutex_destroy( 
&mtx );
    }
    
    inline 
void Lock()
    {
        pthread_mutex_lock( 
&mtx );
    }
    
    inline 
void UnLock()
    {
        pthread_mutex_unlock( 
&mtx );
    }
    
private:
    pthread_mutex_t mtx;
};                                                            

//浠ヤ笅涓烘祴璇曠敤渚?br>ThreadMutex g_Mutex;

void *PrintMsg(void *lpPara)
{
    
char *msg = (char *)lpPara;

    g_Mutex.Lock();

    
for(int i=0; i< 5; i++ )
    {
        cout 
<< msg << endl;
        sleep( 
1 );
    }

    g_Mutex.UnLock();

    
return NULL;
}

int main()
{
    pthread_t t1,t2;

    
//鍒涘緩涓や釜宸ヤ綔綰跨▼錛岀1涓嚎紼嬫墦鍗?0涓?錛岀2涓嚎紼嬫墦鍗?0涓?銆?/span>
    pthread_create( &t1, NULL, &PrintMsg, (void *)"First print thread" );       
    pthread_create( 
&t2, NULL, &PrintMsg, (void *)"Second print thread" );        

    
//絳夊緟綰跨▼緇撴潫                                             
    pthread_join( t1, NULL);                               
    pthread_join( t2, NULL);                               

    
return 0;                                             
}    

閫氳繃g++ -o Mutex Mutex.cpp -lpthread緙栬瘧銆?br>

bujiwu 2009-11-08 20:57 鍙戣〃璇勮
]]>
榪涚▼闂撮氳--System V 鍏變韓鍐呭瓨http://www.shnenglu.com/bujiwu/archive/2009/11/08/100390.htmlbujiwubujiwuSun, 08 Nov 2009 01:39:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/11/08/100390.htmlhttp://www.shnenglu.com/bujiwu/comments/100390.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/11/08/100390.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/100390.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/100390.html
#include <sys/ipc.h>
#include 
<sys/shm.h>
#include 
<unistd.h>
#include 
<errno.h>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<errno.h>
#include 
<sys/types.h>

using namespace std;


int main(int argc, char* argv[])
{
    key_t key 
= ftok("/etc/passwd"'a');
    
if-1 == key )
    {
        fprintf(stderr, 
"Creat Key Error:%s\n", strerror(errno));
        
return -1;
    }
    
    
/*
     if your IPC are used by processes related bya fork() 
    (parent-children-grandchildren) use IPC_PRIVATE as the key
    
*/
    
int shm_id=shmget( key, 1024, IPC_CREAT |0660);

    
if( shm_id == -1 )
    {
        
if ( shmctl(shm_id, IPC_RMID, NULL) == -1 )
        {
            fprintf(stderr, 
"shmctl remove shmid error:%s\n", strerror(errno ));
            
return -1;
        }

        shm_id
=shmget( key, 1024, IPC_CREAT |0660);
        
if( shm_id == -1 )
        {
            fprintf(stderr, 
"shmget create error:%s\n", strerror(errno) );
            
return -1;
        }
    }

    
char* pMap = (char *)shmat(shm_id, NULL, 0);

    
if( (int)pMap == -1)
    {
        fprintf(stderr, 
"shmat create error:%s\n", strerror(errno) );
        shmctl(shm_id, IPC_RMID, NULL);
        
return -1;
    }

    strcpy( pMap, 
"Bujiwu Swallow");

    getchar();

    shmdt(pMap);
    shmctl(shm_id, IPC_RMID, NULL);

    
return 0;
}

#include <sys/ipc.h>
#include 
<sys/shm.h>
#include 
<unistd.h>
#include 
<errno.h>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
#include 
<errno.h>
#include 
<sys/types.h>

using namespace std;

int main(int argc, char* argv[])
{
    key_t key 
= ftok("/etc/passwd"'a');
    
if-1 == key )
    {
        fprintf(stderr, 
"Creat Key Error:%s\n", strerror(errno));
        
return -1;
    }
    
    
/*
     if your IPC are used by processes related bya fork() 
    (parent-children-grandchildren) use IPC_PRIVATE as the key
    
*/
    
int shm_id=shmget( key, 1024, IPC_CREAT|0660);
    
    
if( shm_id == -1 )
    {
        
if ( shmctl(shm_id, IPC_RMID, NULL) == -1 )
        {
            fprintf(stderr, 
"shmctl remove shmid error:%s\n", strerror(errno ));
            
return -1;
        }

        shm_id
=shmget( key, 1024, IPC_CREAT |0660);
        
if( shm_id == -1 )
        {
            fprintf(stderr, 
"shmget create error:%s\n", strerror(errno) );
            
return -1;
        }
    }
    
char* pMap = (char *)shmat(shm_id, NULL, 0);

    
if( (int)pMap == -1)
    {
        fprintf(stderr, 
"shmat create error:%s\n", strerror(errno) );
        shmctl(shm_id, IPC_RMID, NULL);
        
return -1;
    }

    printf(
"Shared  memory::%s\n", pMap);

    shmdt(pMap);
    shmctl(shm_id, IPC_RMID, NULL);

    
return 0;
}

http://www.shnenglu.com/Files/bujiwu/ShareMemory.rar


bujiwu 2009-11-08 09:39 鍙戣〃璇勮
]]>
榪涚▼闂撮氳--System V 娑堟伅闃熷垪http://www.shnenglu.com/bujiwu/archive/2009/11/07/100356.htmlbujiwubujiwuSat, 07 Nov 2009 13:47:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/11/07/100356.htmlhttp://www.shnenglu.com/bujiwu/comments/100356.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/11/07/100356.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/100356.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/100356.html闃呰鍏ㄦ枃

bujiwu 2009-11-07 21:47 鍙戣〃璇勮
]]>
杞澆:浠涔堟槸Core Dumphttp://www.shnenglu.com/bujiwu/archive/2009/11/05/100204.htmlbujiwubujiwuThu, 05 Nov 2009 05:12:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/11/05/100204.htmlhttp://www.shnenglu.com/bujiwu/comments/100204.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/11/05/100204.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/100204.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/100204.html http://blog.chinaunix.net/u/16292/showart_1844400.html

1銆佷粈涔堟槸Core Dump?
Core鐨勬剰鎬濇槸鍐呭瓨, Dump鐨勬剰鎬濇槸鎵斿嚭鏉? 鍫嗗嚭鏉?
寮鍙戝拰浣跨敤Unix紼嬪簭鏃? 鏈夋椂紼嬪簭鑾悕鍏跺鐨刣own浜? 鍗存病鏈変換浣曠殑鎻愮ず(鏈夋椂鍊欎細鎻愮ずcore dumped). 榪欐椂鍊欏彲浠ユ煡鐪嬩竴涓嬫湁娌℃湁褰㈠core.榪涚▼鍙風殑鏂囦歡鐢熸垚, 榪欎釜鏂囦歡渚挎槸鎿嶄綔緋葷粺鎶婄▼搴廳own鎺夋椂鐨勫唴瀛樺唴瀹規墧鍑烘潵鐢熸垚鐨? 瀹冨彲浠ュ仛涓鴻皟璇曠▼搴忕殑鍙傝?
core dump鍙堝彨鏍稿績杞偍, 褰撶▼搴忚繍琛岃繃紼嬩腑鍙戠敓寮傚父, 紼嬪簭寮傚父閫鍑烘椂, 鐢辨搷浣滅郴緇熸妸紼嬪簭褰撳墠鐨勫唴瀛樼姸鍐靛瓨鍌ㄥ湪涓涓猚ore鏂囦歡涓? 鍙玞ore dump.

2銆佸浣曚嬌鐢╟ore鏂囦歡?
gdb -c core鏂囦歡璺緞 [搴旂敤紼嬪簭鐨勮礬寰刔
榪涘幓鍚庤緭鍏here鍥炶濺, 灝卞彲浠ユ樉紺虹▼搴忓湪鍝竴琛屽綋鎺夌殑, 鍦ㄥ摢涓嚱鏁頒腑.

3銆佷負浠涔堟病鏈塩ore鏂囦歡鐢熸垚鍛?
鏈夋椂鍊欑▼搴廳own浜? 浣嗘槸core鏂囦歡鍗存病鏈夌敓鎴? core鏂囦歡鐨勭敓鎴愯窡浣犲綋鍓嶇郴緇熺殑鐜璁劇疆鏈夊叧緋? 鍙互鐢ㄤ笅闈㈢殑璇彞璁劇疆涓涓? 鐒跺悗鍐嶈繍琛岀▼搴忎究鎴愮敓鎴恈ore鏂囦歡.
ulimit -c unlimited
core鏂囦歡鐢熸垚鐨勪綅緗竴鑸簬榪愯紼嬪簭鐨勮礬寰勭浉鍚? 鏂囦歡鍚嶄竴鑸負core.榪涚▼鍙?br>
4銆佺敤gdb鏌ョ湅core鏂囦歡:
涓嬮潰鎴戜滑鍙互鍦ㄥ彂鐢熻繍琛屾椂淇″彿寮曡搗鐨勯敊璇椂鍙戠敓core dump浜?
鍙戠敓core dump涔嬪悗, 鐢╣db榪涜鏌ョ湅core鏂囦歡鐨勫唴瀹? 浠ュ畾浣嶆枃浠朵腑寮曞彂core dump鐨勮.
gdb [exec file] [core file]
濡?
gdb ./test test.core
鍦ㄨ繘鍏db鍚? 鐢╞t鍛戒護鏌ョ湅backtrace浠ユ鏌ュ彂鐢熺▼搴忚繍琛屽埌鍝噷, 鏉ュ畾浣峜ore dump鐨勬枃浠?>琛?


bujiwu 2009-11-05 13:12 鍙戣〃璇勮
]]>
鍒涘緩瀹堟姢榪涚▼鍑芥暟http://www.shnenglu.com/bujiwu/archive/2009/11/01/99952.htmlbujiwubujiwuSun, 01 Nov 2009 14:15:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/11/01/99952.htmlhttp://www.shnenglu.com/bujiwu/comments/99952.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/11/01/99952.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/99952.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/99952.htmlvoid DaemonInit(void
{
    pid_t pid;
    pid_t sid;

    
// fork to leave parent
    pid = fork ();
    
if (pid < 0
    {
        std::cout 
<< "failed to fork!" << std::endl;

        exit (EXIT_FAILURE);
    } 
    
else if (pid > 0
    {
        
//parent process go to exit
        exit (EXIT_SUCCESS);
    }

    
//child process 
    sid = setsid ();
    
if (sid < 0
    {
        std::cout 
<< "Failed to set session id." << std::endl;

        exit (EXIT_FAILURE);
    }
    
    
return;
}



bujiwu 2009-11-01 22:15 鍙戣〃璇勮
]]>
Linux涓嶹indows涓璵ap綾籩rase鏂規硶鐨勫樊寮?/title><link>http://www.shnenglu.com/bujiwu/archive/2009/11/01/map.html</link><dc:creator>bujiwu</dc:creator><author>bujiwu</author><pubDate>Sun, 01 Nov 2009 02:40:00 GMT</pubDate><guid>http://www.shnenglu.com/bujiwu/archive/2009/11/01/map.html</guid><wfw:comment>http://www.shnenglu.com/bujiwu/comments/99928.html</wfw:comment><comments>http://www.shnenglu.com/bujiwu/archive/2009/11/01/map.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/bujiwu/comments/commentRss/99928.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/bujiwu/services/trackbacks/99928.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;"> 1</span> <span style="color: #000000;">#include </span><span style="color: #000000;"><</span><span style="color: #000000;">iostream</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;"> 2</span> <span style="color: #000000;">#include </span><span style="color: #000000;"><</span><span style="color: #000000;">map</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;"> 3</span> <span style="color: #000000;">#include </span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">></span><span style="color: #000000;"><br></span><span style="color: #008080;"> 4</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 5</span> <span style="color: #000000;"></span><span style="color: #0000ff;">using</span><span style="color: #000000;"> </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">  std;<br></span><span style="color: #008080;"> 6</span> <span style="color: #000000;"><br></span><span style="color: #008080;"> 7</span> <span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;"> main(</span><span style="color: #0000ff;">int</span><span style="color: #000000;"> argc, </span><span style="color: #0000ff;">char</span><span style="color: #000000;">*</span><span style="color: #000000;"> argv[])<br></span><span style="color: #008080;"> 8</span> <span style="color: #000000;">{<br></span><span style="color: #008080;"> 9</span> <span style="color: #000000;">    map</span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #0000ff;">int</span><span style="color: #000000;">></span><span style="color: #000000;"> MyMap;<br></span><span style="color: #008080;">10</span> <span style="color: #000000;"><br></span><span style="color: #008080;">11</span> <span style="color: #000000;">    MyMap[</span><span style="color: #000000;">"</span><span style="color: #000000;">bujiwu</span><span style="color: #000000;">"</span><span style="color: #000000;">] </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">26</span><span style="color: #000000;">;<br></span><span style="color: #008080;">12</span> <span style="color: #000000;">    MyMap[</span><span style="color: #000000;">"</span><span style="color: #000000;">swallow</span><span style="color: #000000;">"</span><span style="color: #000000;">] </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">25</span><span style="color: #000000;">;<br></span><span style="color: #008080;">13</span> <span style="color: #000000;"><br></span><span style="color: #008080;">14</span> <span style="color: #000000;">    std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;">"</span><span style="color: #000000;">Before delete element:</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">15</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">for</span><span style="color: #000000;">( map</span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #0000ff;">int</span><span style="color: #000000;">></span><span style="color: #000000;">::iterator Itor </span><span style="color: #000000;">=</span><span style="color: #000000;"> MyMap.begin();<br></span><span style="color: #008080;">16</span> <span style="color: #000000;">            Itor </span><span style="color: #000000;">!=</span><span style="color: #000000;"> MyMap.end(); Itor</span><span style="color: #000000;">++</span><span style="color: #000000;"> )<br></span><span style="color: #008080;">17</span> <span style="color: #000000;">    {<br></span><span style="color: #008080;">18</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> Itor</span><span style="color: #000000;">-></span><span style="color: #000000;">first </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">   </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> Itor</span><span style="color: #000000;">-></span><span style="color: #000000;">second </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">19</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">20</span> <span style="color: #000000;"><br></span><span style="color: #008080;">21</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">for</span><span style="color: #000000;">( map</span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #0000ff;">int</span><span style="color: #000000;">></span><span style="color: #000000;">::iterator Itor </span><span style="color: #000000;">=</span><span style="color: #000000;"> MyMap.begin();<br></span><span style="color: #008080;">22</span> <span style="color: #000000;">            Itor </span><span style="color: #000000;">!=</span><span style="color: #000000;"> MyMap.end(); )<br></span><span style="color: #008080;">23</span> <span style="color: #000000;">    {<br></span><span style="color: #008080;">24</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> ( Itor</span><span style="color: #000000;">-></span><span style="color: #000000;">first </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">bujiwu</span><span style="color: #000000;">"</span><span style="color: #000000;"> )<br></span><span style="color: #008080;">25</span> <span style="color: #000000;">        {<br></span><span style="color: #008080;">26</span> <span style="color: #000000;">            MyMap.erase(Itor</span><span style="color: #000000;">++</span><span style="color: #000000;">); <span style="color: red;">//鍦╳indows涓嬩篃鍙互Itor = MyMap.erase(Itor),浣嗘槸鍦╨inux涓嬩笉琛屻?/span><br></span><span style="color: #008080;">27</span> <span style="color: #000000;">        }<br></span><span style="color: #008080;">28</span> <span style="color: #000000;">        </span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br></span><span style="color: #008080;">29</span> <span style="color: #000000;">        {<br></span><span style="color: #008080;">30</span> <span style="color: #000000;">            Itor</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br></span><span style="color: #008080;">31</span> <span style="color: #000000;">        }<br></span><span style="color: #008080;">32</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">33</span> <span style="color: #000000;"><br></span><span style="color: #008080;">34</span> <span style="color: #000000;">    std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;">"</span><span style="color: #000000;">After delete element:</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">35</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">for</span><span style="color: #000000;">( map</span><span style="color: #000000;"><</span><span style="color: #0000ff;">string</span><span style="color: #000000;">, </span><span style="color: #0000ff;">int</span><span style="color: #000000;">></span><span style="color: #000000;">::iterator Itor </span><span style="color: #000000;">=</span><span style="color: #000000;"> MyMap.begin();<br></span><span style="color: #008080;">36</span> <span style="color: #000000;">            Itor </span><span style="color: #000000;">!=</span><span style="color: #000000;"> MyMap.end(); Itor</span><span style="color: #000000;">++</span><span style="color: #000000;"> )<br></span><span style="color: #008080;">37</span> <span style="color: #000000;">    {<br></span><span style="color: #008080;">38</span> <span style="color: #000000;">        std::cout </span><span style="color: #000000;"><<</span><span style="color: #000000;"> Itor</span><span style="color: #000000;">-></span><span style="color: #000000;">first </span><span style="color: #000000;"><<</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">   </span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;"><<</span><span style="color: #000000;"> Itor</span><span style="color: #000000;">-></span><span style="color: #000000;">second </span><span style="color: #000000;"><<</span><span style="color: #000000;"> std::endl;<br></span><span style="color: #008080;">39</span> <span style="color: #000000;">    }<br></span><span style="color: #008080;">40</span> <span style="color: #000000;"><br></span><span style="color: #008080;">41</span> <span style="color: #000000;">    </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">42</span> <span style="color: #000000;">}<br></span><span style="color: #008080;">43</span> <span style="color: #000000;"></span><span style="color: #000000;"></span><span style="color: #000000;"><br></span><span style="color: #008080;">44</span> <span style="color: #000000;"></span></div> <br>閫氳繃嫻嬭瘯鍦ㄤ笉綆″湪linux榪樻槸Windows騫沖彴涓?vector,list閮芥湁鏂規硶<strong>iterator erase(</strong> <strong> iterator </strong>_Where <strong>);</strong> <br>浣嗘槸鍦↙inux涓媘ap涓病鏈夋柟娉?strong>iterator erase(</strong> <strong> iterator </strong>_Where <strong>);</strong> 鎵浠ヤ笂榪頒唬鐮佸湪Linux騫沖彴涓嬬26琛屽繀欏誨啓鎴怣yMap.erase(Itor++),鑰屼笉鑳藉啓鑳絀tor = MyMap.erase(Itor). 鍦╓indows涓嬩簩縐嶆柟娉曢兘鍙互銆?br><br> <img src ="http://www.shnenglu.com/bujiwu/aggbug/99928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/bujiwu/" target="_blank">bujiwu</a> 2009-11-01 10:40 <a href="http://www.shnenglu.com/bujiwu/archive/2009/11/01/map.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>fork瀛︿範絎旇http://www.shnenglu.com/bujiwu/archive/2009/09/13/96062.htmlbujiwubujiwuSun, 13 Sep 2009 12:25:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/09/13/96062.htmlhttp://www.shnenglu.com/bujiwu/comments/96062.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/09/13/96062.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/96062.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/96062.html 1 #include <unistd.h>
 2 #include <sys/types.h>
 3 #include <stdio.h>
 4 #include <string.h>
 5 #include <errno.h>
 6 
 7 int main(int argc ,char* argv[])
 8 {
 9     pid_t my_pid = getpid();
10     pid_t parent_pid = getppid();
11 
12     printf("ProcessID =%ld  ParentID =%ld\n", my_pid, parent_pid);
13 
14     pid_t child = fork();
15 
16     printf("-------------------------------------\n");
17     printf("Fork Process ID = %ld \n", child );
18 
19     switch( child )
20     {
21         case -1:
22                printf("Create my child process error by fork func, errno=%ld\n", strerror(errno) );
23                break;
24 
25         case 0:
26               printf("This is child process! Process ID = %ld\n", getpid() );
27               break;
28 
29         default:
30               printf("This is not child process! Process ID= %ld Child Process ID=%ld\n", getpid(), child);
31                
32     }
33     
34     printf("who am I? Process ID=%ld  Parent Process ID= %ld\n", getpid(), getppid());
35 
36     return 0;
37 }
38 
榪愯緇撴灉[swallow@localhost syspr]$ ./process
ProcessID =1182  ParentID =1090
-------------------------------------
Fork Process ID = 0
This is child process! Process ID = 1183
who am I? Process ID=1183  Parent Process ID= 1182
-------------------------------------
Fork Process ID = 1183
This is not child process! Process ID= 1182 Child Process ID=1183
who am I? Process ID=1182  Parent Process ID= 1090
[swallow@localhost syspr]$

http://www.shnenglu.com/Files/bujiwu/fork.rar



bujiwu 2009-09-13 20:25 鍙戣〃璇勮
]]>
Linux娣誨姞鐜鍙橀噺涓嶨CC緙栬瘧鍣ㄦ坊鍔營NCLUDE涓嶭IB鐜鍙橀噺http://www.shnenglu.com/bujiwu/archive/2009/01/25/72575.htmlbujiwubujiwuSun, 25 Jan 2009 10:20:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/01/25/72575.htmlhttp://www.shnenglu.com/bujiwu/comments/72575.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/01/25/72575.html#Feedback2http://www.shnenglu.com/bujiwu/comments/commentRss/72575.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/72575.html.bashrc鎴?bash_profile閲屽鍔犱笅闈㈢殑鍐呭錛?br>(娉ㄦ剰錛氱瓑鍙峰墠闈笉瑕佸姞絀烘牸,鍚﹀垯鍙兘鍑虹幇 command not found)

#鍦≒ATH涓壘鍒板彲鎵ц鏂囦歡紼嬪簭鐨勮礬寰勩?br>export PATH =$PATH:$HOME/bin

#gcc鎵懼埌澶存枃浠剁殑璺緞
C_INCLUDE_PATH=/usr/include/libxml2:/MyLib
export C_INCLUDE_PATH

#g++鎵懼埌澶存枃浠剁殑璺緞
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/libxml2:/MyLib
export CPLUS_INCLUDE_PATH

#鎵懼埌鍔ㄦ侀摼鎺ュ簱鐨勮礬寰?br>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/MyLib
export LD_LIBRARY_PATH

#鎵懼埌闈欐佸簱鐨勮礬寰?br>LIBRARY_PATH=$LIBRARY_PATH:/MyLib
export LIBRARY_PATH


bujiwu 2009-01-25 18:20 鍙戣〃璇勮
]]>
Linux綰跨▼瀛︿範絎旇http://www.shnenglu.com/bujiwu/archive/2009/01/18/72256.htmlbujiwubujiwuSun, 18 Jan 2009 06:00:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/01/18/72256.htmlhttp://www.shnenglu.com/bujiwu/comments/72256.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/01/18/72256.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/72256.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/72256.html 1 #include <stdio.h>       /* standard I/O routines                 */
 2 #include <pthread.h>     /* pthread functions and data structures */
 3 #include <unistd.h>      /* head file for sleep function */
 4 
 5 /* global mutex for our program. assignment initializes it */
 6 pthread_mutex_t a_mutex = PTHREAD_MUTEX_INITIALIZER;
 7 
 8 /* function to be executed by the new thread */
 9 void* do_loop(void* data)
10 {
11     int me = *((int*)data);     /* thread identifying number */
12     int rc; /* contain mutex lock/unlock results */
13     
14     /* lock the mutex, to assure exclusive */
15     rc = pthread_mutex_lock(&a_mutex);
16     
17     for (int i=0; i< 4; i++
18     {
19         printf("'%d' - Got '%d'\n", me, i);
20         sleep(1);
21     }
22 
23     /* unlock mutex */
24     rc = pthread_mutex_unlock(&a_mutex);
25     
26     /* terminate the thread */
27     pthread_exit(NULL);
28 }
29 
30 /* like any CPlusPlus program, program's execution begins in main */
31 /*g++ -o Thread Thread.cpp -lpthread*/
32 int main(int argc, char* argv[])
33 {
34     int        thr_id;         /* thread ID for the newly created thread */
35     pthread_t  p_thread1;       /* thread's structure                     */
36     pthread_t  p_thread2;       /* thread's structure                     */
37     int        a = 1;  /* thread 1 identifying number            */
38     int        b = 2;  /* thread 2 identifying number            */
39 
40     /* create a new thread that will execute 'do_loop()' */
41     thr_id = pthread_create(&p_thread1, NULL, do_loop, (void*)&a);
42     
43     /* create a new thread */
44     thr_id = pthread_create(&p_thread2, NULL, do_loop, (void*)&b);
45     
46     /*wait until sub thread exit*/
47     pthread_join(p_thread1, NULL);
48     pthread_join(p_thread2, NULL);
49 
50     return 0;
51 }
52 
緙栬瘧錛?nbsp;gcc -o pthread pthread.c  -lpthread




bujiwu 2009-01-18 14:00 鍙戣〃璇勮
]]>
Gvim鎿嶄綔姹囨?/title><link>http://www.shnenglu.com/bujiwu/archive/2009/01/04/71166.html</link><dc:creator>bujiwu</dc:creator><author>bujiwu</author><pubDate>Sun, 04 Jan 2009 13:39:00 GMT</pubDate><guid>http://www.shnenglu.com/bujiwu/archive/2009/01/04/71166.html</guid><wfw:comment>http://www.shnenglu.com/bujiwu/comments/71166.html</wfw:comment><comments>http://www.shnenglu.com/bujiwu/archive/2009/01/04/71166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/bujiwu/comments/commentRss/71166.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/bujiwu/services/trackbacks/71166.html</trackback:ping><description><![CDATA[1銆乂im涓浛鎹㈡搷浣?br>   s/old/new/g   #鏇挎崲褰撳墠琛宱ld涓簄ew<br>   6,7s/old/new/g  #鏇挎崲絎叚琛屽埌絎竷琛屼腑鐨刼ld涓簄ew<br>   %s/old/new/g    #鏇挎崲鍏ㄩ儴鐨刼ld涓簄ew<br><br>2銆佹煡鎵懼瓧絎︿覆<br>   :/Count    #姝e悜鏌ユ壘Count  鎸塶鏄劇ず涓嬩竴嬈?br>   :%Count    #閫嗗悜鏌ユ壘Count <br>   鍦ㄥ綋鍓嶅瓧絎︿覆涓婃寜*,姝e悜鏌ユ壘褰撳墠瀛楃涓?br>   鍦ㄥ綋鍓嶅瓧絎︿覆涓婃寜#,鍙嶅悜鏌ユ壘褰撳墠瀛楃涓?br> <br>3銆佸瓧絎︿覆鑱旀兂<br>   Ctrl+p<br><br>4銆侀噸澶嶄笂涓琛屽唴瀹?br>   Ctrl+y<br><br>5銆佽煩杞?br>   gg  璺沖埌鏂囦歡棣栬<br>   G   璺沖埌鏂囦歡灝捐<br>   123G 璺沖埌絎?23琛?br>   鏁板瓧0 縐誨埌褰撳墠琛屾湯灝?br>   $     縐誨埌褰撳墠琛岄閮?br>   鍏夋爣鍦▄銆亇銆乕銆乚絳夋嫭鍙蜂笂鎸?璺沖埌鐩稿簲鐨勬嫭鍙蜂笂<br>6銆佹柊澧炰竴琛?br>   o   鍦ㄥ綋鍓嶅厜鏍囦笅涓琛屾柊澧炰竴琛?br>   O   鍦ㄥ綋鍓嶅厜鏍囦笂涓琛屾柊澧炰竴琛?br><br>7銆佹樉紺?闅愯棌琛屽彿<br>   set nu 鏄劇ず琛屽彿<br>   set nonu 闅愯棌絳夊彿<br><br>8銆佸湪Gvim涓墽琛屽閮╯hell鍛戒護<br>   :!澶栭儴鍛戒護錛屽:<br>   :!ls -l<br><br>9銆佸垹闄?澶嶅埗琛?br>   dd 鍒犻櫎涓琛?br>   3dd 鍒犻櫎褰撳墠鍏夋爣鎵鍦ㄨ鐨勪互涓嬩笁琛?br>   yy  澶嶅埗涓琛?br>   3yy 澶嶅埗涓夎<br>   p 綺樿創<br><br>10銆佹挙娑堜笌鎾ゆ秷鐨勬挙娑?br>   u 鎾ゆ秷<br>   Ctrl+R 鎾ゆ秷鐨勬挙娑?br><br><br>.vimrc妯℃澘<br><a href="http://www.shnenglu.com/Files/bujiwu/vimrc.rar">http://www.shnenglu.com/Files/bujiwu/vimrc.rar</a><br><br>"============================================<br>syntax on<br>set nu<br><br>set autoindent<br>set cindent<br>set smartindent<br><br>set softtabstop=4<br>set tabstop=4<br>set shiftwidth=4<br>set expandtab<br>set smarttab<br><br>set nobackup<br><br>set cursorline<br><br>set tags="./tags,./../tags,./../../tags"<br>"=================================================<br><br> <br> <img src ="http://www.shnenglu.com/bujiwu/aggbug/71166.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/bujiwu/" target="_blank">bujiwu</a> 2009-01-04 21:39 <a href="http://www.shnenglu.com/bujiwu/archive/2009/01/04/71166.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Linux涓嬫枃浠舵墦鍖呬笌瑙e寘http://www.shnenglu.com/bujiwu/archive/2009/01/04/71152.htmlbujiwubujiwuSun, 04 Jan 2009 11:23:00 GMThttp://www.shnenglu.com/bujiwu/archive/2009/01/04/71152.htmlhttp://www.shnenglu.com/bujiwu/comments/71152.htmlhttp://www.shnenglu.com/bujiwu/archive/2009/01/04/71152.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/71152.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/71152.html  tar -cvf Pro.tar /home/lin/Pro   #灝?home/lin/Pro鏂囦歡澶逛笅鐨勬墍鏈夋枃浠舵墦鍖呮垚Pro.tar

鎵撹В鍖?.tar.gz)
  tar -cvzf firefox-3.0.3.tar.gz firefox       #灝唂irefox鏂囦歡澶規墦鍖呬負firefox-3.0.3.tar.gz
  tar -xvzf firefox-3.0.3.tar.gz

鎵撹В鍖?.tar.bz2)
  tar -cvjf firefox-3.0.3.tar.bz2  firefox/    #灝唂irefox鏂囦歡澶規墦鍖呬負firefox-3.0.3.tar.bz2
  tar -xvjf firefox-3.0.3.tar.bz2

鍙傛暟璇存槑錛?br>c   鍒涘緩鏂扮殑妗f鏂囦歡銆傚鏋滅敤鎴鋒兂澶囦喚涓涓洰褰曟垨鏄竴浜涙枃浠訛紝灝辮閫夋嫨榪欎釜閫夐」銆?br>x   浠庢。妗堟枃浠朵腑閲婃斁鏂囦歡銆?br>v   璇︾粏鎶ュ憡tar澶勭悊鐨勬枃浠朵俊鎭傚鏃犳閫夐」錛宼ar涓嶆姤鍛婃枃浠朵俊鎭?br>z   鐢╣zip鏉ュ帇緙?瑙e帇緙╂枃浠訛紝鍔犱笂璇ラ夐」鍚庡彲浠ュ皢妗f鏂囦歡榪涜鍘嬬緝錛屼絾榪樺師鏃朵篃涓瀹氳浣跨敤璇ラ夐」榪涜瑙e帇緙┿?
f   浣跨敤妗f鏂囦歡鎴栬澶囷紝榪欎釜閫夐」閫氬父鏄繀閫夌殑銆?br>




bujiwu 2009-01-04 19:23 鍙戣〃璇勮
]]>
Linux甯哥敤鐭ヨ瘑鏀墮泦錛?/title><link>http://www.shnenglu.com/bujiwu/archive/2009/01/04/71149.html</link><dc:creator>bujiwu</dc:creator><author>bujiwu</author><pubDate>Sun, 04 Jan 2009 11:06:00 GMT</pubDate><guid>http://www.shnenglu.com/bujiwu/archive/2009/01/04/71149.html</guid><wfw:comment>http://www.shnenglu.com/bujiwu/comments/71149.html</wfw:comment><comments>http://www.shnenglu.com/bujiwu/archive/2009/01/04/71149.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/bujiwu/comments/commentRss/71149.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/bujiwu/services/trackbacks/71149.html</trackback:ping><description><![CDATA[1銆佺▼搴忓墠鍙頒笌鍚庡彴鍒囨崲<br>   ctrl+z  灝嗚繘紼嬪垏鎹㈠埌鍚庡彴<br>   fg      璋冨埌鍓嶅彴<br><br>2銆乴inux鎵歸噺鏌ユ壘鏂囦歡鍐呭<br>   find ./ -name "*.cpp" | xargs grep '瑕佹煡鎵劇殑鍐呭'<br>   濡?find . -name "*.cpp" | xargs grep 'main'<br><br>   濡傛灉闇瑕佹煡鎵劇殑鍐呭鍖呭惈鐗規畩絎﹀彿錛屾瘮濡?絳夌瓑錛実rep瑕佸姞鍙傛暟<br>   find ./ -name "*.cpp" | xargs grep -F '瑕佹煡鎵劇殑鍐呭'<br><br>3銆佸垹闄ょ壒瀹氱被鍨嬬殑鏂囦歡<br>   濡?鍚庣紑鏄?log鐨勬枃浠?br>   find . -name "*.log"  -exec rm {} \;<br>   鎴栬? find . -name "*.log" | xargs rm<br><br><br>4銆佹枃浠舵壒閲忛噸鍛藉悕<br>   灝嗘墍鏈?.h鍚庣紑鍚嶇殑鏂囦歡閲嶅懡鍚嶄負*.header<br>   rename .h .header *.h<br>   鏍煎紡錛?rename 鏇挎崲鍓嶇殑鍐呭 鏇挎崲鍚庣殑鍐呭 閫氶厤絎?br>   <br>5銆佸垪鍑洪櫎浠涔堜箣澶栫殑鏂囦歡<br>   鍒楀嚭涓嶅寘鎷瑂wallow瀛楃鐨勬枃浠訛細 ls | grep -v swallow<br>   鍒犻櫎涓嶅寘鎷瑂wallow瀛楃鐨勬枃浠訛細 ls | grep -v swallow | xargs rm<br><br>6銆佸皢鐢ㄦ埛澧炲姞鍒皊udo緇?br>   root# vim /etc/sudoers<br>   鍦ㄨ繖閲屽鍔犲唴瀹癸細<br>   ## Allow root to run any commands anywhere <br>   root    ALL=(ALL)   ALL<br>   bujiwu  ALL=(ALL)   ALL<br>   <br>7銆佷慨鏀?etc/crontab鏂囦歡澧炲姞緋葷粺瀹氭椂榪愯紼嬪簭鍔熻兘<br><br>8銆乵ake鏃舵嫻嬪埌鏃墮挓閿欒銆傛偍鐨勫垱寤哄彲鑳芥槸涓嶅畬鏁?<br>   鐢變簬鏂囦歡鏃墮挓涓庣郴緇熸椂閽熶笉鍖歸厤銆傛墍浠ュ彲浠ョ敤touch鏇存敼鏂囦歡鏃墮棿鏉pdate.<br>   find . -type f -exec touch {} \; <br><img src ="http://www.shnenglu.com/bujiwu/aggbug/71149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/bujiwu/" target="_blank">bujiwu</a> 2009-01-04 19:06 <a href="http://www.shnenglu.com/bujiwu/archive/2009/01/04/71149.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Linux涓婱akefile鏂囦歡http://www.shnenglu.com/bujiwu/archive/2008/12/29/70720.htmlbujiwubujiwuMon, 29 Dec 2008 14:40:00 GMThttp://www.shnenglu.com/bujiwu/archive/2008/12/29/70720.htmlhttp://www.shnenglu.com/bujiwu/comments/70720.htmlhttp://www.shnenglu.com/bujiwu/archive/2008/12/29/70720.html#Feedback0http://www.shnenglu.com/bujiwu/comments/commentRss/70720.htmlhttp://www.shnenglu.com/bujiwu/services/trackbacks/70720.html
鐢熸垚鍔ㄦ佸簱(*.so)Makefile鏂囦歡#Lib information
CURDIR =$(shell pwd)
LIBNAME :=libmyso.so
OUTDIR :=$(CURDIR)
OUTFILE :=$(OUTDIR)/$(LIBNAME)

SRC =node.cpp
OBJS =$(SRC:.cpp=.o)

#Complier information
CC = g++
INCPATH :=
LIBPATH :=
LIBS :=
COMOPT := -O2

all:$(OBJS)
    $(CC) -fPIC -shared -o $(OUTFILE) $(OBJS)
    
%.o:%.cpp
    $(CC) -c $(COMOPT) $(INCPATH) -o $@ $<

clean:
    rm -rf $(CURDIR)/*.o


鐢熸垚闈欐佸簱(*.a)Makefile鏂囦歡#lib information
CURDIR =$(shell pwd)
LIBNAME :=libmylib.a
OUTDIR :=$(CURDIR)
OUTFILE :=$(OUTDIR)/$(LIBNAME)

SRC = Display.cpp
OBJS =$(SRC:.cpp=.o)

#complier information
CC=g++
INCPATH :=
LIBPATH :=
LIBS :=
COMOPT := -O2

all:$(OBJS)
    ar -r $(OUTFILE) $(OBJS)
    
%.o:%.cpp
    $(CC) -c $(COMOPT) $(INCPATH) -o $@ $<

clean:
    rm -rf $(CURDIR)/*.o


姣旇緝閫氱敤鐨凪akefile鏂囦歡#CPP Files Directory
vpath %.cpp ./../   
vpath %.cpp ./../Student

#Head Files Directory    
vpath %.h ./../Student/

#Get Makefile Current Directory
CURDIR =$(shell pwd)

SRC =Main.cpp \
     Student.cpp
     
SRC_OBJ =$(SRC:.cpp=.o)
CCFLAGS =-O2 -g -DUT_4_16
CXX =g++
CPPFLAGS =

#Load Static Library
LIBDIR =-L $(CURDIR)/../StaticLib  -lmylib $(CURDIR)/../DynamicLib/libmyso.so
#Load Library Head Files
INCDIR =-I $(CURDIR)/../StaticLib  -I $(CURDIR)/../DynamicLib

.PHONY :all
all :edit run

.PHONY :edit
edit: $(SRC_OBJ)
$(SRC_OBJ):%.o :%.cpp
    $(CXX) $(INCDIR) -c $(CCFLAGS) $(CPPFLAGS) $< -o $@
   
.PHONY :run
run: $(SRC_OBJ)
    $(CXX) $(INCDIR) $(SRC_OBJ) $(LIBDIR) -o Main
   
.PHONY :clean
clean:
    rm $(SRC_OBJ)

鏈綆鍗曠殑Makefile鏂囦歡#鍋囪鍙湁涓涓枃浠禡ain.cpp鐢熸垚Makefile鏂囦歡
Main:Main.o
    g++ -o $@ $^
%.o:%.cpp %.h
    g++ -c $@ $>

涓嶉渶瑕佹墜宸ユ坊鍔犲悇涓枃浠剁殑渚濊禆鍏崇郴錛屼嬌鐢╲path鑷姩鎼滅儲鏂囦歡錛?br> 嫻嬭瘯宸ョ▼錛?br> http://www.shnenglu.com/Files/bujiwu/Linux.rar




bujiwu 2008-12-29 22:40 鍙戣〃璇勮
]]>
久久综合狠狠综合久久综合88| 久久久久四虎国产精品| 色噜噜狠狠先锋影音久久| 日本欧美久久久久免费播放网| 精品久久久久久久久免费影院| 久久人人爽人人爽人人片AV麻豆| 国内精品九九久久久精品| 亚洲一本综合久久| 久久99国产精品久久| 久久香蕉一级毛片| 久久久久中文字幕| 一本大道久久香蕉成人网| 性做久久久久久免费观看| 性做久久久久久久久老女人| 久久久久久久精品成人热色戒| 97精品伊人久久久大香线蕉| 狠狠综合久久AV一区二区三区| 伊人色综合久久天天人手人婷| 国产一久久香蕉国产线看观看| 久久精品人人做人人爽电影| 久久99久久无码毛片一区二区| 精品国产乱码久久久久久人妻| 人妻久久久一区二区三区| 久久精品国产精品亚洲艾草网美妙 | 久久久久国产一区二区三区| 国产精品乱码久久久久久软件 | 久久中文字幕人妻丝袜| 久久亚洲私人国产精品vA| 色综合色天天久久婷婷基地| 四虎影视久久久免费观看| 亚洲精品美女久久久久99| 久久国产精品免费一区| 一本久久a久久精品亚洲| 狠狠狠色丁香婷婷综合久久五月 | 久久99热这里只有精品66| 久久久久99精品成人片直播| 精品欧美一区二区三区久久久| 无码超乳爆乳中文字幕久久| 久久这里只有精品久久| 亚洲乱码精品久久久久..| 精品久久久久久国产免费了|