锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美中文字幕在线观看,亚洲女人天堂av,一区二区三区www http://m.shnenglu.com/bujiwu/zh-cn Sun, 16 Nov 2025 01:41:40 GMT Sun, 16 Nov 2025 01:41:40 GMT 60 Linux鍐呮牳VFS---rootfs鏂囦歡緋葷粺鍔犺澆 http://m.shnenglu.com/bujiwu/archive/2010/07/04/119301.htmlbujiwu bujiwu Sun, 04 Jul 2010 08:58:00 GMT http://m.shnenglu.com/bujiwu/archive/2010/07/04/119301.html http://m.shnenglu.com/bujiwu/comments/119301.html http://m.shnenglu.com/bujiwu/archive/2010/07/04/119301.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/119301.html http://m.shnenglu.com/bujiwu/services/trackbacks/119301.html 1.鍐呮牳鍚姩璋冪敤start_kernel鍑芥暟榪涜鍒濆鍖栥?
asmlinkage void __init start_kernel( void ) // init\Main.c:528 { buffer_init(); key_init(); security_init(); vfs_caches_init(totalram_pages); // 678琛岋紝vfs鍒濆鍖?/span> signals_init(); }
2.start_kernel璋冪敤vfs_caches_init瀵箆fs榪涜鍒濆鍖栥?br>
// fs\Dcach.c:2354琛?/span>void __init vfs_caches_init(unsigned long mempages) { ....... dcache_init(); inode_init(); files_init(mempages); mnt_init(); // mnt鍒濆鍖?/span> bdev_cache_init(); chrdev_init(); }
3.鍦╲fs_caches_init璋冪敤fs\namespace.c 2321琛岀殑mnt_init鍑芥暟
void __init mnt_init( void ) { init_rootfs(); // 鍒濆鍖杛ootfs鏂囦歡緋葷粺 init_mount_tree(); // 鍒濆鍖栧姞杞芥爲(wèi) }
4. fs\ramfs絎?08琛岀殑init_rootfs鍑芥暟鍒濆鍖杛ootfs鏂囦歡緋葷粺
int __init init_rootfs( void ) { int err; err = bdi_init( & ramfs_backing_dev_info); if (err) return err; err = register_filesystem( & rootfs_fs_type); // 娉ㄥ唽rootfs鏂囦歡緋葷粺 if (err) bdi_destroy( & ramfs_backing_dev_info); return err; }
rootfs鏂囦歡緋葷粺淇℃伅fs\ramfs絎?89琛?
static struct file_system_type rootfs_fs_type = { .name = " rootfs " , .get_sb = rootfs_get_sb, .kill_sb = kill_litter_super, };
5.璋冪敤register_filesystem鍑芥暟灝唕ootfs娉ㄥ唽鍒?span style="font-weight: bold; color: #ff0000; font-family: 榛戜綋;">file_systems鏂囦歡緋葷粺涓?br>
//fs\Filesystem.c絎?9琛屻?br>int register_filesystem( struct file_system_type * fs) { int res = 0 ; struct file_system_type ** p; BUG_ON(strchr(fs -> name, ' . ' )); if (fs -> next) return - EBUSY; INIT_LIST_HEAD( & fs -> fs_supers); write_lock( & file_systems_lock); p = find_filesystem(fs -> name, strlen(fs -> name));//鏌ユ壘鍒版枃浠剁郴緇熷姞杞戒綅緗?br> if ( * p) res = - EBUSY; else * p = fs; write_unlock( & file_systems_lock); return res; }
file_systems鍙橀噺鏄墍鏈夋枃浠剁郴緇熼摼琛ㄧ殑澶存寚閽堛傞氳繃浠ヤ笂榪囩▼rootfs_fs_type灝卞姞鍏ュ埌浜?jiǎn)file_systems閾捐〃澶寸殑file_system_type綾誨瀷鐨勯摼琛ㄤ腑銆傚彲浠ラ氳繃file_systems鎸囬拡閬嶅巻榪欎釜閾捐〃錛屽緱鍒扮壒瀹氱殑鏂囦歡緋葷粺file_system_type
鎸囬拡銆?br> ]]>[杞澆]top鍛戒護(hù)璇﹁В http://m.shnenglu.com/bujiwu/archive/2010/04/27/top.htmlbujiwu bujiwu Tue, 27 Apr 2010 05:26:00 GMT http://m.shnenglu.com/bujiwu/archive/2010/04/27/top.html http://m.shnenglu.com/bujiwu/comments/113700.html http://m.shnenglu.com/bujiwu/archive/2010/04/27/top.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/113700.html http://m.shnenglu.com/bujiwu/services/trackbacks/113700.html http://blog.chinaunix.net/u/12973/showart_637900.html top鍛戒護(hù)鏄疞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 鍛戒護(hù)鐨勬墽琛岀粨鏋溿傚叾鍐呭濡備笅錛?/p>
01:06:48
褰撳墠鏃墮棿
up 1:22
緋葷粺榪愯鏃墮棿錛屾牸寮忎負(fù)鏃?鍒?/td>
1 user
褰撳墠鐧誨綍鐢ㄦ埛鏁?/td>
load average: 0.06, 0.60, 0.48
緋葷粺璐熻澆錛屽嵆浠誨姟闃熷垪鐨勫鉤鍧囬暱搴︺?br>
涓変釜鏁板煎垎鍒負(fù) 1鍒嗛挓銆?鍒嗛挓銆?5鍒嗛挓鍓嶅埌鐜板湪鐨勫鉤鍧囧箋?/td>
絎簩銆佷笁琛屼負(fù)榪涚▼鍜孋PU鐨勪俊鎭傚綋鏈夊涓狢PU鏃訛紝榪欎簺鍐呭鍙兘浼?xì)瓒厴q囦袱琛屻傚唴瀹瑰涓嬶細(xì)
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
鏈鍚庝袱琛屼負(fù)鍐呭瓨淇℃伅銆傚唴瀹瑰涓嬶細(xì)
Mem: 191272k total
鐗╃悊鍐呭瓨鎬婚噺
173656k used
浣跨敤鐨勭墿鐞嗗唴瀛樻婚噺
17616k free
絀洪棽鍐呭瓨鎬婚噺
22052k buffers
鐢ㄤ綔鍐呮牳緙撳瓨鐨勫唴瀛橀噺
Swap: 192772k total
浜ゆ崲鍖烘婚噺
0k used
浣跨敤鐨勪氦鎹㈠尯鎬婚噺
192772k free
絀洪棽浜ゆ崲鍖烘婚噺
123988k cached
緙撳啿鐨勪氦鎹㈠尯鎬婚噺銆?br>
鍐呭瓨涓殑鍐呭琚崲鍑哄埌浜ゆ崲鍖猴紝鑰屽悗鍙堣鎹㈠叆鍒板唴瀛橈紝浣嗕嬌鐢ㄨ繃鐨勪氦鎹㈠尯灝氭湭琚鐩栵紝
璇ユ暟鍊煎嵆涓鴻繖浜?strong>鍐呭宸插瓨鍦ㄤ簬鍐呭瓨涓?/strong>鐨勪氦鎹㈠尯鐨勫ぇ灝忋?br>
鐩稿簲鐨勫唴瀛樺啀嬈¤鎹㈠嚭鏃跺彲涓嶅繀鍐嶅浜ゆ崲鍖哄啓鍏ャ?/td>
榪涚▼淇℃伅鍖?/h4>
緇熻淇℃伅鍖哄煙鐨勪笅鏂規(guī)樉紺轟簡(jiǎn)鍚勪釜榪涚▼鐨勮緇嗕俊鎭傞鍏堟潵璁よ瘑涓涓嬪悇鍒楃殑鍚箟銆?/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
鍛戒護(hù)鍚?鍛戒護(hù)琛?/td>
y
WCHAN
鑻ヨ榪涚▼鍦ㄧ潯鐪狅紝鍒欐樉紺虹潯鐪犱腑鐨勭郴緇熷嚱鏁板悕
z
Flags
浠誨姟鏍囧織錛屽弬鑰?sched.h
榛樿鎯呭喌涓嬩粎鏄劇ず姣旇緝閲嶈鐨?PID銆乁SER銆丳R銆丯I銆乂IRT銆丷ES銆丼HR銆丼銆?CPU銆?MEM銆乀IME+銆丆OMMAND
鍒椼傚彲浠ラ氳繃涓嬮潰鐨勫揩鎹烽敭鏉ユ洿鏀規(guī)樉紺哄唴瀹廣?/p>
鏇存敼鏄劇ず鍐呭
閫氳繃 f 閿彲浠ラ夋嫨鏄劇ず鐨勫唴瀹廣傛寜 f 閿箣鍚庝細(xì)鏄劇ず鍒楃殑鍒楄〃錛屾寜 a-z
鍗沖彲鏄劇ず鎴栭殣钘忓搴旂殑鍒楋紝鏈鍚庢寜鍥炶濺閿‘瀹氥?/p>
鎸?o 閿彲浠ユ敼鍙樺垪鐨勬樉紺洪『搴忋傛寜灝忓啓鐨?a-z 鍙互灝嗙浉搴旂殑鍒楀悜鍙崇Щ鍔紝鑰屽ぇ鍐欑殑 A-Z
鍙互灝嗙浉搴旂殑鍒楀悜宸︾Щ鍔ㄣ傛渶鍚庢寜鍥炶濺閿‘瀹氥?/p>
鎸夊ぇ鍐欑殑 F 鎴?O 閿紝鐒跺悗鎸?a-z
鍙互灝嗚繘紼嬫寜鐓х浉搴旂殑鍒楄繘琛屾帓搴忋傝屽ぇ鍐欑殑 R 閿彲浠ュ皢褰撳墠鐨勬帓搴忓掕漿銆?/p>
鍛戒護(hù)浣跨敤
1錛?宸ュ叿錛堝懡浠わ級(jí)鍚嶇О
top
2錛庡伐鍏鳳紙鍛戒護(hù)錛変綔鐢?br>
鏄劇ず緋葷粺褰撳墠鐨勮繘紼嬪拰鍏朵粬鐘跺喌錛?
top鏄竴涓姩鎬佹樉紺鴻繃紼?鍗沖彲浠ラ氳繃鐢ㄦ埛鎸夐敭鏉ヤ笉鏂埛鏂板綋鍓嶇姸鎬?濡傛灉鍦ㄥ墠鍙版墽琛岃鍛戒護(hù),瀹冨皢鐙崰鍓嶅彴,鐩村埌鐢ㄦ埛緇堟璇ョ▼搴忎負(fù)姝?
姣旇緝鍑嗙‘鐨勮,top鍛戒護(hù)鎻愪緵浜?jiǎn)瀹炴椂鐨勫绯痪l熷鐞嗗櫒鐨勭姸鎬佺洃瑙?瀹冨皢鏄劇ず緋葷粺涓瑿PU鏈“鏁忔劅”鐨勪換鍔″垪琛?璇ュ懡浠ゅ彲浠ユ寜CPU浣跨敤.鍐呭瓨浣跨敤鍜屾墽琛屾椂闂?
瀵逛換鍔¤繘琛屾帓搴忥紱鑰屼笖璇ュ懡浠ょ殑寰堝鐗規(guī)ч兘鍙互閫氳繃浜や簰寮忓懡浠ゆ垨鑰呭湪涓漢瀹氬埗鏂囦歡涓繘琛岃瀹?
3錛庣幆澧冭緗?br>
鍦↙inux涓嬩嬌鐢ㄣ?br>
4錛庝嬌鐢ㄦ柟娉?br>
4錛?浣跨敤鏍煎紡
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
4錛?鍙傛暟璇存槑
d 鎸囧畾姣忎袱嬈″睆騫曚俊鎭埛鏂頒箣闂寸殑鏃墮棿闂撮殧銆傚綋鐒剁敤鎴峰彲浠ヤ嬌鐢╯浜や簰鍛戒護(hù)鏉ユ敼鍙樹箣銆?br>
p 閫氳繃鎸囧畾鐩戞帶榪涚▼ID鏉ヤ粎浠呯洃鎺ф煇涓繘紼嬬殑鐘舵併?br>
q 璇ラ夐」灝嗕嬌top娌℃湁浠諱綍寤惰繜鐨勮繘琛屽埛鏂般傚鏋滆皟鐢ㄧ▼搴忔湁瓚呯駭鐢ㄦ埛鏉冮檺錛岄偅涔坱op灝嗕互
灝藉彲鑳介珮鐨勪紭鍏堢駭榪愯銆?br>
S 鎸囧畾绱妯″紡
s 浣縯op鍛戒護(hù)鍦ㄥ畨鍏ㄦā寮忎腑榪愯銆傝繖灝嗗幓闄や氦浜掑懡浠ゆ墍甯︽潵鐨勬綔鍦ㄥ嵄闄┿?br>
i 浣縯op涓嶆樉紺轟換浣曢棽緗垨鑰呭兊姝昏繘紼嬨?br>
c 鏄劇ず鏁翠釜鍛戒護(hù)琛岃屼笉鍙槸鏄劇ず鍛戒護(hù)鍚?br>
4.3鍏朵粬
涓嬮潰浠嬬粛鍦╰op鍛戒護(hù)鎵ц榪囩▼涓彲浠ヤ嬌鐢ㄧ殑涓浜涗氦浜掑懡浠ゃ備粠浣跨敤瑙掑害鏉ョ湅錛岀啛緇冪殑鎺屾彙榪欎簺鍛戒護(hù)姣旀帉鎻¢夐」榪橀噸瑕佷竴浜涖傝繖浜涘懡浠ら兘鏄崟瀛楁瘝鐨勶紝濡傛灉鍦ㄥ懡
浠よ閫夐」涓嬌鐢ㄤ簡(jiǎn)s閫夐」錛屽垯鍙兘鍏朵腑涓浜涘懡浠や細(xì)琚睆钄芥帀銆?br>
Ctrl+L 鎿﹂櫎騫朵笖閲嶅啓灞忓箷銆?br>
h鎴栬? 鏄劇ず甯姪鐢婚潰錛岀粰鍑轟竴浜涚畝鐭殑鍛戒護(hù)鎬葷粨璇存槑銆?br>
k
緇堟涓涓繘紼嬨傜郴緇熷皢鎻愮ず鐢ㄦ埛杈撳叆闇瑕佺粓姝㈢殑榪涚▼PID錛屼互鍙?qiáng)闇瑕佸彂閫佺粰璇ヨ繘紼嬩粈涔堟牱鐨勪俊鍙楓備竴鑸殑緇堟榪涚▼鍙互浣跨敤15淇″彿錛涘鏋滀笉鑳芥甯哥粨鏉熼偅灝變嬌鐢?
淇″彿9寮哄埗緇撴潫璇ヨ繘紼嬨傞粯璁ゅ兼槸淇″彿15銆傚湪瀹夊叏妯″紡涓鍛戒護(hù)琚睆钄姐?br>
i 蹇界暐闂茬疆鍜屽兊姝昏繘紼嬨傝繖鏄竴涓紑鍏沖紡鍛戒護(hù)銆?br>
q 閫鍑虹▼搴忋?br>
r 閲嶆柊瀹夋帓涓涓繘紼嬬殑浼樺厛綰у埆銆傜郴緇熸彁紺虹敤鎴瘋緭鍏ラ渶瑕佹敼鍙樼殑榪涚▼PID浠ュ強(qiáng)闇瑕佽緗殑
榪涚▼浼樺厛綰у箋傝緭鍏ヤ竴涓鍊煎皢浣夸紭鍏堢駭闄嶄綆錛屽弽涔嬪垯鍙互浣胯榪涚▼鎷ユ湁鏇撮珮鐨勪紭鍏堟潈銆傞粯璁ゅ兼槸10銆?br>
S 鍒囨崲鍒扮瘡璁℃ā寮忋?br>
s 鏀瑰彉涓ゆ鍒鋒柊涔嬮棿鐨勫歡榪熸椂闂淬傜郴緇熷皢鎻愮ず鐢ㄦ埛杈撳叆鏂扮殑鏃墮棿錛屽崟浣嶄負(fù)s銆傚鏋滄湁灝忔暟錛?
灝辨崲綆楁垚m s銆傝緭鍏?鍊煎垯緋葷粺灝嗕笉鏂埛鏂幫紝榛樿鍊兼槸5
s銆傞渶瑕佹敞鎰忕殑鏄鏋滆緗お灝忕殑鏃墮棿錛屽緢鍙兘浼?xì)寮曡捣涓嶆柇鍒锋枎图屼粠鑰屾牴鏈潵涓嶅強(qiáng)鐪嬫竻鏄劇ず鐨勬儏鍐碉紝鑰屼笖緋葷粺璐熻澆涔熶細(xì)澶уぇ澧炲姞銆?br>
f鎴栬匜 浠庡綋鍓嶆樉紺轟腑娣誨姞鎴栬呭垹闄ら」鐩?br>
o鎴栬匫 鏀瑰彉鏄劇ず欏圭洰鐨勯『搴忋?br>
l 鍒囨崲鏄劇ず騫沖潎璐熻澆鍜屽惎鍔ㄦ椂闂翠俊鎭?br>
m 鍒囨崲鏄劇ず鍐呭瓨淇℃伅銆?br>
t 鍒囨崲鏄劇ず榪涚▼鍜孋PU鐘舵佷俊鎭?br>
c 鍒囨崲鏄劇ず鍛戒護(hù)鍚嶇О鍜屽畬鏁村懡浠よ銆?br>
銆M 鏍規(guī)嵁椹葷暀鍐呭瓨澶у皬榪涜鎺掑簭銆?br>
P 鏍規(guī)嵁CPU浣跨敤鐧懼垎姣斿ぇ灝忚繘琛屾帓搴忋?br>
T 鏍規(guī)嵁鏃墮棿/绱鏃墮棿榪涜鎺掑簭銆?br>
W 灝嗗綋鍓嶈緗啓鍏/.toprc鏂囦歡涓傝繖鏄啓top閰嶇疆鏂囦歡鐨勬帹鑽愭柟娉曘?/span>
]]> [杞澆]C鍑芥暟atoi鐨勫疄鐜?/title> http://m.shnenglu.com/bujiwu/archive/2010/01/15/atoi.htmlbujiwu bujiwu Fri, 15 Jan 2010 09:52:00 GMT http://m.shnenglu.com/bujiwu/archive/2010/01/15/atoi.html http://m.shnenglu.com/bujiwu/comments/105772.html http://m.shnenglu.com/bujiwu/archive/2010/01/15/atoi.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/105772.html http://m.shnenglu.com/bujiwu/services/trackbacks/105772.html http://blog.chinaunix.net/u2/76292/showart_1845022.html
1 #include < stdlib.h > 2 #include < stdio.h > 3 #include < ctype.h > 4 5 long my_atol( const char * nptr) 6 { 7 int c; /* current char */ 8 long total; /* current total */ 9 int sign; /* if '-', then negative, otherwise positive */ 10 11 /* skip whitespace */ 12 while ( isspace(( int )(unsigned char ) * nptr) ) 13 { 14 ++ nptr; 15 } 16 17 c = ( int )(unsigned char ) * nptr ++ ; 18 sign = c; /* save sign indication */ 19 if (c == ' - ' || c == ' + ' ) 20 { 21 c = ( int )(unsigned char ) * nptr ++ ; /* skip sign */ 22 } 23 24 total = 0 ; 25 26 while (isdigit(c)) 27 { 28 total = 10 * total + (c - ' 0 ' ); /* accumulate digit */ 29 c = ( int )(unsigned char ) * nptr ++ ; /* get next char */ 30 } 31 32 if (sign == ' - ' ) 33 { 34 return - total; 35 } 36 else 37 { 38 return total; /* return result, negated if necessary */ 39 } 40 } 41 42 int main( int argc, char * argv[]) 43 { 44 if ( argc < 2 ) 45 { 46 return - 1 ; 47 } 48 49 int i = my_atol(argv[ 1 ]); 50 printf( " [%s]====>[%d]\n " , argv[ 1 ], i); 51 52 int j = atoi(argv[ 1 ]); 53 printf( " [%s]====>[%d]\n " , argv[ 1 ], j); 54 55 return 0 ; 56 } 57
http://m.shnenglu.com/Files/bujiwu/atoi.rar ]]> Unix Network Programming - Vol2 璇諱功絎旇(Chapter 9. Record Locking) http://m.shnenglu.com/bujiwu/archive/2009/12/18/103474.htmlbujiwu bujiwu Fri, 18 Dec 2009 07:57:00 GMT http://m.shnenglu.com/bujiwu/archive/2009/12/18/103474.html http://m.shnenglu.com/bujiwu/comments/103474.html http://m.shnenglu.com/bujiwu/archive/2009/12/18/103474.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/103474.html http://m.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://m.shnenglu.com/Files/bujiwu/RecordLocking.rar ]]>boost::filestream緇勪歡灝佽 http://m.shnenglu.com/bujiwu/archive/2009/11/23/101692.htmlbujiwu bujiwu Mon, 23 Nov 2009 05:44:00 GMT http://m.shnenglu.com/bujiwu/archive/2009/11/23/101692.html http://m.shnenglu.com/bujiwu/comments/101692.html http://m.shnenglu.com/bujiwu/archive/2009/11/23/101692.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/101692.html http://m.shnenglu.com/bujiwu/services/trackbacks/101692.html
/* * * @file FileSystem.h * @brief Operation file or diretory * @author Jiwu Bu * @version 1.0.0 * @date 2009-11-23 */ #ifndef FILESYSTEM_H_H#define FILESYSTEM_H_H #include < iostream > #include < vector > using namespace std; class CFileSystem { public : /* * * @brief Gets an array of dirctories from current direcoty, * using Recur value to determine whether to search * subdirectories. * @param SubDirVec Ouput parameter, return the search result * @param DirPath * @param Recur Whether search subdirectories. * * @return */ static bool GetDirectories(vector < string >& SubDirVec, const string & DirPath, bool Recur = false ); /* * * @brief Get the names of files in the specified directory that * match the specified extensive name, using a value to * determine whether to search subdirectories. * * @param FileVec Ouput parameter, return the search result * @param DirPath * @param ExeName Extensive name, if ExeName equal "*.*" search all file * @param Recur Whether search subdirectories * * @return */ static bool GetFiles(vector < string >& FileVec, const string & DirPath, const string & ExeName, bool Recur = false ); /* * * @brief Create a new directory. * * @param Dir New directory path. Example:/home/bujiwu/test * * @return true, if success * false, if failed */ static bool CreateDirectory( const string & Dir); /* * * @brief Judge whether this file or diretory exists. * * @param Path * * @return true, if exists * false, if not exists */ static bool Exists( const string & Path); /* * * @brief Delete this file or directory * * @param Path */ static void Delete( const string & Path); /* * * @brief Move file or directory from FromPath to ToPath. * * @param FromPath * @param ToPath */ static void Move( const string & FromPath, const string & ToPath); /* * * @brief Copy file or directory from FromPath to ToPath. * * @param FromPath * @param ToPath */ static void Copy( const string & FromPath, const string & ToPath); /* * * @brief Get file size * * @param FilePath * * @return */ static unsigned long GetFileSize( const string & FilePath); }; #endif
嫻嬭瘯鐢ㄤ緥錛?br>
#include " ../FileSystem/FileSystem.h " #include < algorithm > #include < iterator > #include < string > using namespace std; int main( int argc, char * argv[]) { vector < string > MyVec; string Path = " /home/bujiwu/EncapDirectory " ; CFileSystem::Copy( " /home/bujiwu/epoll " , Path); CFileSystem::GetFiles(MyVec, Path, " *.* " , true ); copy(MyVec.begin(), MyVec.end(), ostream_iterator < string > (cout , " \n " ) ); return 0 ; }
http://m.shnenglu.com/Files/bujiwu/FileSystem.rar ]]>鍦↙inux涓嶹inodws涓嬬紪璇慴oost http://m.shnenglu.com/bujiwu/archive/2009/11/23/101689.htmlbujiwu bujiwu Mon, 23 Nov 2009 05:31:00 GMT http://m.shnenglu.com/bujiwu/archive/2009/11/23/101689.html http://m.shnenglu.com/bujiwu/comments/101689.html http://m.shnenglu.com/bujiwu/archive/2009/11/23/101689.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/101689.html http://m.shnenglu.com/bujiwu/services/trackbacks/101689.html date_time filesystem function_types graph iostreams math mpi program_options python regex serialization signals system test thread wave Windows: 1銆佸紑濮嬭彍鍗?-Microsoft Visual Studio 2008--Visual Studio Tools---Open Visual Studio 2008 Command Prompt 鎵撳紑鍛戒護(hù)琛岀獥鍙?br>3銆佸埄鐢╟d鍛戒護(hù)榪涘叆鍒幫細(xì)boost->toos->jam->src鐩綍 4銆佺紪璇戯紝vc 2008杈撳叆鍛戒護(hù)錛歜uild vc9 5銆佹妸鐢熸垚鐨刡jam.exe(bin.ntx86鐩綍涓?鎷瘋礉鍒癇oost鏍圭洰褰曚笅錛岃緭鍏ュ懡浠わ細(xì) 6銆乥jam --with-regex Linux: $cd path/to/boost_1_40_0 $ ./bootstrap.sh 浜х敓bjam鏂囦歡 $ ./bjam install 瀹夎鎵鏈?br> $./bjam --with-regex 瀹夎鐗瑰畾鐨勫簱 $./bjam --with-filesystem #./bjam --with-filesystem "-sTOOLS=gcc" "--includedir=/usr/include" "--libdir=/usr/lib/boost" install ]]> semaphore淇″彿瀛︿範(fàn)絎旇 http://m.shnenglu.com/bujiwu/archive/2009/11/17/101190.htmlbujiwu bujiwu Tue, 17 Nov 2009 05:28:00 GMT http://m.shnenglu.com/bujiwu/archive/2009/11/17/101190.html http://m.shnenglu.com/bujiwu/comments/101190.html http://m.shnenglu.com/bujiwu/archive/2009/11/17/101190.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/101190.html http://m.shnenglu.com/bujiwu/services/trackbacks/101190.html sem_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) { while ( true ) { 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) { while ( true ) { 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, 0 , 0 ) != 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://m.shnenglu.com/Files/bujiwu/semaphore.rar ]]> setitimer鍑芥暟浣跨敤絎旇 http://m.shnenglu.com/bujiwu/archive/2009/11/16/101061.htmlbujiwu bujiwu Mon, 16 Nov 2009 05:50:00 GMT http://m.shnenglu.com/bujiwu/archive/2009/11/16/101061.html http://m.shnenglu.com/bujiwu/comments/101061.html http://m.shnenglu.com/bujiwu/archive/2009/11/16/101061.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/101061.html http://m.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 ; }
]]>pthread_mutex_t灝佽 http://m.shnenglu.com/bujiwu/archive/2009/11/08/pthread_mutex.htmlbujiwu bujiwu Sun, 08 Nov 2009 12:57:00 GMT http://m.shnenglu.com/bujiwu/archive/2009/11/08/pthread_mutex.html http://m.shnenglu.com/bujiwu/comments/100413.html http://m.shnenglu.com/bujiwu/archive/2009/11/08/pthread_mutex.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/100413.html http://m.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> ]]>榪涚▼闂撮氳--System V 鍏變韓鍐呭瓨 http://m.shnenglu.com/bujiwu/archive/2009/11/08/100390.htmlbujiwu bujiwu Sun, 08 Nov 2009 01:39:00 GMT http://m.shnenglu.com/bujiwu/archive/2009/11/08/100390.html http://m.shnenglu.com/bujiwu/comments/100390.html http://m.shnenglu.com/bujiwu/archive/2009/11/08/100390.html#Feedback 0 http://m.shnenglu.com/bujiwu/comments/commentRss/100390.html http://m.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://m.shnenglu.com/Files/bujiwu/ShareMemory.rar ]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲日本理论电影 |
欧美精品日韩 |
亚洲国产专区校园欧美 |
久久久www成人免费毛片麻豆 |
亚洲深夜福利网站 |
亚洲夜晚福利在线观看 |
欧美有码视频 |
久久野战av |
亚洲风情在线资源站 |
99国产精品久久久久久久 |
亚洲一区影院 |
麻豆久久婷婷 |
欧美视频一区二区三区四区 |
国产欧美在线观看 |
今天的高清视频免费播放成人 |
亚洲激情网站免费观看 |
日韩一级成人av |
久久国产福利国产秒拍 |
亚洲国产第一 |
欧美在线观看天堂一区二区三区 |
久久视频精品在线 |
欧美精选一区 |
国产一区二区三区四区在线观看 |
亚洲福利视频二区 |
亚洲一区二区三区在线播放 |
久热精品视频在线免费观看
|
国产精品毛片在线 |
久久精品在线观看 |
免费成人毛片 |
欧美国产在线视频 |
亚洲视频 欧洲视频 |
久久免费国产精品 |
国产精品美女www爽爽爽 |
亚洲激情在线 |
久久久亚洲国产天美传媒修理工 |
亚洲高清在线 |
欧美在线视频免费播放 |
欧美日韩二区三区 |
亚洲激情女人 |
蜜臀99久久精品久久久久久软件 |
亚洲午夜一区二区 |
欧美精品在线免费 |
亚洲国产清纯 |
免费一区视频 |
久久国产88 |
国产亚洲欧美日韩日本 |
亚洲一区二区三区在线视频 |
亚洲国产99精品国自产 |
久久久www成人免费无遮挡大片
|
国产午夜亚洲精品理论片色戒 |
日韩午夜免费 |
亚洲国产精品悠悠久久琪琪 |
久久精品国产在热久久 |
国产美女精品免费电影 |
亚洲欧美欧美一区二区三区 |
亚洲精品免费在线 |
欧美二区乱c少妇 |
亚洲国产天堂久久综合 |
免费观看久久久4p |
久久九九热免费视频 |
国产亚洲精品aa |
久久一区二区三区四区 |
久久精品女人的天堂av |
精品动漫3d一区二区三区免费 |
久久国产手机看片 |
久久av老司机精品网站导航 |
国产精品女主播 |
欧美一区二区在线播放 |
篠田优中文在线播放第一区 |
国产精品资源在线观看 |
久久国产视频网 |
久久青草久久 |
亚洲精选成人 |
一本色道久久88综合日韩精品 |
国产精品久久久久久久午夜片 |
欧美一级黄色录像 |
久久九九国产精品怡红院 |
亚洲国内精品在线 |
99国产精品99久久久久久 |
国产毛片一区二区 |
欧美激情偷拍 |
国产精品久久久久久超碰 |
久久九九国产精品怡红院 |
麻豆成人综合网 |
中文欧美日韩 |
久久久久**毛片大全 |
一区二区三区国产在线 |
韩日精品视频 |
91久久夜色精品国产网站 |
国产日韩欧美在线 |
免费国产一区二区 |
国产精品婷婷 |
日韩视频永久免费 |
影视先锋久久 |
久久久久免费观看 |
久久伊人精品天天 |
精品成人久久 |
欧美成人免费视频 |
亚洲综合另类 |
中文亚洲欧美 |
欧美国产精品专区 |
欧美午夜久久久 |
久久免费99精品久久久久久 |
欧美福利在线观看 |
久久亚洲春色中文字幕 |
欧美日韩另类综合 |
欧美成人69 |
国产午夜精品一区理论片飘花 |
亚洲国产精品激情在线观看 |
国产一区导航 |
亚洲色无码播放 |
亚洲人成绝费网站色www |
欧美一区二区三区精品 |
亚洲一区二区影院 |
欧美韩国在线 |
欧美成人在线影院 |
国产欧美69 |
亚洲午夜激情在线 |
一区二区三区成人 |
免费观看久久久4p |
毛片一区二区三区 |
国产一区二区三区久久精品 |
亚洲午夜激情网站 |
中国av一区 |
欧美福利电影网 |
亚洲大胆人体视频 |
亚洲韩日在线 |
久久字幕精品一区 |
巨胸喷奶水www久久久免费动漫 |
国产精品亚洲成人 |
亚洲少妇自拍 |
午夜一级久久 |
欧美网站在线观看 |
一区二区三区www |
中文成人激情娱乐网 |
欧美日本亚洲视频 |
亚洲精品免费一区二区三区 |
亚洲欧洲精品一区二区 |
免费日韩av |
久久九九全国免费精品观看 |
欧美大尺度在线 |
亚洲理论在线 |
亚洲一区欧美 |
国产精品久久久久久久久免费樱桃 |
99精品欧美一区二区三区综合在线 |
香蕉久久一区二区不卡无毒影院 |
在线成人小视频 |
欧美淫片网站 |
久久人人97超碰人人澡爱香蕉 |
国产一区二区三区的电影 |
午夜国产精品视频免费体验区 |
亚洲综合视频网 |
国产精品欧美日韩 |
亚洲在线中文字幕 |
午夜精品久久久久久99热软件 |
国产精品羞羞答答 |
久久精品国产一区二区三 |
麻豆视频一区二区 |
91久久久久久国产精品 |
欧美日韩国产影片 |
亚洲欧美成aⅴ人在线观看 |
久久精品视频免费 |
亚洲欧洲免费视频 |
欧美日韩一区视频 |
亚洲欧美日韩精品久久奇米色影视 |
久久成人综合网 |
红桃视频一区 |
欧美全黄视频 |
亚洲欧美中文日韩在线 |
欧美freesex交免费视频 |
一本色道久久综合亚洲二区三区
|
亚洲第一网站免费视频 |
一区二区三区欧美视频 |
国产视频一区在线 |
欧美连裤袜在线视频 |
欧美一站二站 |
亚洲乱码国产乱码精品精98午夜 |
欧美一区二区三区四区在线 |
91久久黄色 |
国产一区二区三区久久悠悠色av |
欧美国产日本高清在线 |
小黄鸭视频精品导航 |
亚洲精品久久久久久久久久久久久 |
久久精品91久久久久久再现 |
99re这里只有精品6 |
韩国三级电影一区二区 |
国产精品二区三区四区 |
欧美精品1区2区3区 |
久久久精彩视频 |
新67194成人永久网站 |
亚洲美女啪啪 |
亚洲国产精品日韩 |
免费在线观看一区二区 |
欧美亚洲一级片 |
亚洲一区二区三区免费在线观看 |
亚洲电影免费观看高清 |
国内精品久久久久伊人av |
国产伦精品一区二区三区免费 |
欧美剧在线观看 |
女人香蕉久久**毛片精品 |