锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲每日更新,欧美日韩在线一区二区三区,国产一区二区三区免费在线观看 http://m.shnenglu.com/bujiwu/zh-cn Sat, 15 Nov 2025 20:38:51 GMT Sat, 15 Nov 2025 20:38:51 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(); // 鍒濆鍖栧姞杞芥爲 }
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灝卞姞鍏ュ埌浜唂ile_systems閾捐〃澶寸殑file_system_type綾誨瀷鐨勯摼琛ㄤ腑銆傚彲浠ラ氳繃file_systems鎸囬拡閬嶅巻榪欎釜閾捐〃錛屽緱鍒扮壒瀹氱殑鏂囦歡緋葷粺file_system_type
鎸囬拡銆?br> ]]>[杞澆]top鍛戒護璇﹁В 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鍛戒護鏄疞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>
]]> [杞澆]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 鎵撳紑鍛戒護琛岀獥鍙?br>3銆佸埄鐢╟d鍛戒護榪涘叆鍒幫細boost->toos->jam->src鐩綍 4銆佺紪璇戯紝vc 2008杈撳叆鍛戒護錛歜uild vc9 5銆佹妸鐢熸垚鐨刡jam.exe(bin.ntx86鐩綍涓?鎷瘋礉鍒癇oost鏍圭洰褰曚笅錛岃緭鍏ュ懡浠わ細 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淇″彿瀛︿範絎旇 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 ]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
国产精品最新自拍 |
欧美久久九九 |
亚洲片国产一区一级在线观看 |
久久精品一区二区三区不卡 |
午夜在线一区二区 |
欧美视频中文一区二区三区在线观看 |
欧美日本一区二区三区 |
欧美午夜大胆人体 |
国产精品一区免费视频 |
国内揄拍国内精品久久 |
亚洲国产精品999 |
亚洲天堂av高清 |
久久成人羞羞网站 |
欧美aa在线视频 |
99国产精品自拍 |
欧美在线黄色 |
欧美日韩精品高清 |
国产亚洲欧美一区在线观看 |
亚洲国产欧美一区 |
亚洲一区二区三区涩 |
久久视频免费观看 |
亚洲裸体俱乐部裸体舞表演av |
午夜精品在线观看 |
欧美二区在线观看 |
国产综合av |
亚洲伊人色欲综合网 |
欧美大片va欧美在线播放 |
中国女人久久久 |
欧美高清在线一区 |
国内精品视频在线观看 |
亚洲午夜久久久久久久久电影院 |
久久综合久久综合这里只有精品 |
99精品视频一区 |
欧美jizz19性欧美 |
国内精品久久久久久影视8 |
亚洲少妇诱惑 |
亚洲国产精品悠悠久久琪琪 |
欧美在线999 |
国产精品一区二区久久久久 |
日韩一区二区久久 |
欧美国产综合视频 |
久久精品视频亚洲 |
国产喷白浆一区二区三区 |
亚洲视频在线观看免费 |
91久久久久久 |
欧美大片专区 |
亚洲人精品午夜在线观看 |
久久免费视频观看 |
久久国产精品一区二区三区四区 |
国产精品国产馆在线真实露脸 |
一区二区三区日韩 |
最新日韩在线视频 |
欧美成人在线免费视频 |
亚洲国产综合在线看不卡 |
麻豆国产va免费精品高清在线 |
午夜精品久久久久影视 |
国产精品呻吟 |
午夜在线播放视频欧美 |
亚洲一级黄色片 |
国产精品日韩久久久久 |
西西人体一区二区 |
亚洲欧美激情在线视频 |
国产一级揄自揄精品视频 |
精品福利免费观看 |
欧美怡红院视频 |
欧美一区二区成人 |
好看不卡的中文字幕 |
久久综合一区二区三区 |
久久资源在线 |
日韩午夜三级在线 |
99视频热这里只有精品免费 |
国产精品毛片 |
久久亚洲欧美 |
欧美精品亚洲 |
欧美一区二区三区在线观看 |
久久久www成人免费无遮挡大片 |
伊人精品成人久久综合软件 |
亚洲第一成人在线 |
欧美日韩直播 |
久久久久久亚洲综合影院红桃
|
一区二区三区国产精华 |
91久久精品日日躁夜夜躁欧美 |
欧美激情久久久久久 |
中文在线资源观看网站视频免费不卡 |
亚洲网站在线看 |
狠狠综合久久 |
亚洲国产日韩一区 |
国产精品国产自产拍高清av |
久久超碰97中文字幕 |
久久综合久久久 |
亚洲一区二区三区在线视频 |
性欧美办公室18xxxxhd |
亚洲高清久久久 |
一区二区av在线 |
激情久久婷婷 |
99日韩精品 |
亚洲第一免费播放区 |
一区二区欧美在线观看 |
国产一级久久 |
一区二区三区日韩精品视频 |
狠狠色综合日日 |
一区二区日韩伦理片 |
在线日韩中文字幕 |
亚洲一区二区三区在线 |
亚洲欧洲在线视频 |
午夜在线精品偷拍 |
亚洲天堂av在线免费 |
久久久久久精 |
久久国产精品久久国产精品 |
欧美日韩免费观看一区 |
免费在线欧美黄色 |
国产日本亚洲高清 |
99国产精品视频免费观看一公开
|
久久精品国产999大香线蕉 |
亚洲精品欧美一区二区三区 |
欧美在线观看一区 |
亚洲男人的天堂在线 |
免费视频久久 |
美女爽到呻吟久久久久 |
国产日韩欧美精品 |
亚洲视频图片小说 |
在线一区观看 |
欧美日韩国产欧 |
亚洲黄色三级 |
亚洲卡通欧美制服中文 |
亚洲国产综合视频在线观看 |
中文在线资源观看视频网站免费不卡 |
精品91在线 |
欧美一区二区三区在线视频 |
亚洲图片自拍偷拍 |
免费在线成人av |
欧美激情片在线观看 |
…久久精品99久久香蕉国产 |
久久精品亚洲乱码伦伦中文
|
久久综合五月天婷婷伊人 |
国产免费一区二区三区香蕉精 |
一本色道久久综合亚洲精品小说 |
亚洲精品小视频在线观看 |
欧美大色视频 |
亚洲欧洲午夜 |
一区二区三区日韩精品 |
欧美日韩成人综合天天影院 |
亚洲精品一区二区三区福利
|
亚洲电影下载 |
亚洲啪啪91 |
欧美高清在线一区 |
日韩一级大片 |
亚洲欧美日韩中文在线制服 |
国产精品亚洲第一区在线暖暖韩国 |
亚洲视频观看 |
久久久亚洲一区 |
亚洲欧洲视频在线 |
欧美日韩精品欧美日韩精品 |
国产精品99久久久久久久久久久久 |
亚洲综合国产 |
激情懂色av一区av二区av |
欧美成人午夜 |
aa亚洲婷婷 |
久久精品av麻豆的观看方式
|
久久久久国产一区二区 |
一区二区视频免费完整版观看 |
久久躁日日躁aaaaxxxx |
亚洲免费成人av电影 |
性做久久久久久久免费看 |
伊人成人在线视频 |
欧美日韩国产在线一区 |
午夜精品剧场 |
91久久久久久 |
久久久亚洲国产天美传媒修理工 |
亚洲精品日本 |
国产一区二区三区四区 |
欧美精品高清视频 |
亚洲欧美在线x视频 |
亚洲第一成人在线 |
久久成人18免费网站 |
亚洲精品国产欧美 |
国产欧美69 |
欧美绝品在线观看成人午夜影视
|
亚洲日本激情 |
国产精品手机在线 |
欧美xx视频 |
久久激情一区 |
亚洲小视频在线 |
91久久精品国产91性色 |
久久男人资源视频 |
亚洲欧美日韩一区在线 |
日韩午夜激情电影 |
亚洲第一页自拍 |
久久久久久久97 |
国产欧美一二三区 |
蜜臀av性久久久久蜜臀aⅴ四虎 |
国产精品99久久久久久宅男 |
亚洲高清中文字幕 |
久久久亚洲国产天美传媒修理工 |
一区二区三区视频在线看 |
亚洲国产黄色 |
激情综合久久 |
国产一区激情 |
国产日韩在线不卡 |
国产精品一区二区三区乱码
|