欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Linux重定向原理與系統(tǒng)調(diào)用dup2-創(chuàng)新互聯(lián)

🧸🧸🧸各位大佬大家好,我是豬皮兄弟🧸🧸🧸
在這里插入圖片描述

費(fèi)縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!文章目錄
  • 一、重定向原理
    • ①輸出重定向
    • ②輸入重定向
  • 二、重定向的系統(tǒng)調(diào)用dup2
    • dup2輸出重定向
  • 三、如何理解一切皆文件
  • 四.緩沖區(qū)
    • ①常見(jiàn)的緩沖區(qū)刷新策略
    • ②緩沖區(qū)的認(rèn)識(shí)

一、重定向原理

在這里插入圖片描述
因?yàn)槲募?lèi)的接口都會(huì)去調(diào)用系統(tǒng)調(diào)用,因?yàn)閷?duì)文件操作屬于是文件管理,這部分內(nèi)容是需要操作系統(tǒng)去完成的,因此在系統(tǒng)中,他是只認(rèn)識(shí)fd這個(gè)數(shù)字的,并不知道FILE*這些,這些是上層封裝出來(lái)的

①輸出重定向

輸出重定向的本質(zhì)就是關(guān)掉stdout,也就是1號(hào)文件描述符,然后打開(kāi)一個(gè)文件去占用這個(gè)文件描述符,然后輸出即可

int main()
{char buffer[SIZE]="zhupi";
	close(1);//unistd.h
	int fd = open("log.txt",O_WRONLY|O_TRUNC|O_CREAT,0666);
	//打開(kāi)文件,寫(xiě)|覆蓋|沒(méi)有則創(chuàng)建,權(quán)限為0666,真實(shí)權(quán)限需要集合權(quán)限掩碼 0666&umask
	if(fd<0) ...
	printf("fd:%d\n",fd);
	cout<

在這里插入圖片描述

②輸入重定向

輸入重定向就是關(guān)掉stdin,也就是0號(hào)文件描述符,然后打開(kāi)文件,占用0號(hào)文件描述符的位置,然后鍵盤(pán)輸入,或者其他輸入進(jìn)去即可

int main()
{char buffer[64];
	close(0);
	int fd = open("log.txt",O_RDONLY)
	if(fd<0) ...
	printf("fd:%d\n",fd);
	fgets(buffer,sizeof buffer,stdin);
	printf(buffer);
	printf("\n");
	close(fd);
	return 0;
}
二、重定向的系統(tǒng)調(diào)用dup2

在這里插入圖片描述
在這里插入圖片描述

int dup2(int oldfd,int newfd);

dup2的作用是把oldfd拷貝到newfd,比如給log.txt創(chuàng)建到3的位置,然后將3拷貝給1,所以3是oldfd,1是newfd(這只是dup2的做法,其實(shí)我們close掉1,再open文件log.txt也是一樣的效果)
在這里插入圖片描述

dup2輸出重定向
int main(int argc,char*argv[])
{printf("%d\n",argc);
	if(argc!=2)
	{return 2;
	}
	int fd = open("log.txt",O_WROLNY|O_CREAT|O_TRUNC,0666);
	if(fd<0)
	{perror("open");
		return 1;
	}
	dup2(fd,1);//old是fd,new是1,把fd拷貝給1
	fprintf(stdout,"%s\n",argv[1]);
	return 0;
}

當(dāng)我們自己先close(1),再open log.txt,最后如果close(fd)的時(shí)候,發(fā)現(xiàn)并沒(méi)有輸出進(jìn)log.txt,這是因?yàn)榫彌_區(qū)的原因,還沒(méi)有刷新進(jìn)log.txt就被關(guān)了,這個(gè)到后面緩沖區(qū)的時(shí)候再談,而dup2(fd,1)就不會(huì),這是dup2的一種特性

三、如何理解一切皆文件

一切皆文件時(shí)Linux的設(shè)計(jì)哲學(xué),體現(xiàn)在軟件設(shè)計(jì)層面
那Linux是C寫(xiě)的,如何用C實(shí)現(xiàn)面向?qū)ο螅踔潦沁\(yùn)行時(shí)多態(tài)?

在這里插入圖片描述
也就是用結(jié)構(gòu)體來(lái)體現(xiàn)類(lèi)的成員變量,然后存函數(shù)指針來(lái)找成員函數(shù)
所以說(shuō)底層不同的硬件,對(duì)應(yīng)不同的操作方法就可以了,每個(gè)設(shè)備實(shí)現(xiàn)的read和write不同
所以設(shè)計(jì)了一個(gè)struct_file來(lái)描述,在上層沒(méi)有任何的硬件差別,看待所有文件的格式,都統(tǒng)一成了對(duì)file_struct的操作,所以在操作系統(tǒng)之上,Linux就有一切皆文件,Linux的這種管理模式,稱(chēng)作VFS(virtual file system虛擬文件系統(tǒng))

在這里插入圖片描述

四.緩沖區(qū) ①常見(jiàn)的緩沖區(qū)刷新策略

1.立即刷新
2.行刷新(行緩沖)
3,滿(mǎn)刷新(全緩沖)

②緩沖區(qū)的認(rèn)識(shí)

一般而言,行緩沖的設(shè)備一般是顯示器
因?yàn)轱@示器是給用戶(hù)看的,一方面照顧效率,一方面照顧用戶(hù)體驗(yàn)
全緩沖的設(shè)備一般是磁盤(pán)文件
因?yàn)樗⑿碌酱疟P(pán)文件,因?yàn)橛脩?hù)是不需要馬上看到的,更在乎的是效率

但是所有的設(shè)備,都傾向于全緩沖,因?yàn)榫彌_區(qū)滿(mǎn)了才刷新就意味著需要更少的IO操作->更少的訪(fǎng)問(wèn)外設(shè),提高效率,其他屬性層略是結(jié)合具體情況做的妥協(xié)(都傾向于緩沖區(qū))

例:
在這里插入圖片描述
因?yàn)橄蝻@示器打印是行緩沖,所以都能夠正常打印,但當(dāng)向文件中打印的時(shí)候,因?yàn)樗⑿虏呗允侨彌_(滿(mǎn)刷新),所以在程序結(jié)束之前或者說(shuō)緩沖區(qū)滿(mǎn)之前并不會(huì)刷新到文件,所以子進(jìn)程進(jìn)行對(duì)父進(jìn)程的拷貝,所以C的打印接口打印了兩次,那么write系統(tǒng)調(diào)用為什么只打印一次呢?因?yàn)榫彌_區(qū)是C標(biāo)準(zhǔn)庫(kù)提供的,緩沖區(qū)并不是OS的,所以系統(tǒng)調(diào)用并不會(huì)用這套緩沖區(qū)的刷新策略,而且,父子進(jìn)程所指向的緩沖區(qū)在打印之前也是指向的同一個(gè),因?yàn)橛袑?xiě)時(shí)拷貝。(C的打印接口其實(shí)就是拷貝一份給緩沖區(qū),然后緩沖區(qū)去調(diào)用系統(tǒng)調(diào)來(lái)刷新)

上面我們指的緩沖區(qū)是用戶(hù)級(jí)緩沖區(qū),這個(gè)緩沖區(qū)是C標(biāo)準(zhǔn)庫(kù)提供的,除此之外,還有內(nèi)核級(jí)緩沖區(qū),其實(shí)調(diào)用write,也不是直接寫(xiě)到外設(shè)上的,而是每個(gè)file結(jié)構(gòu)體都有對(duì)應(yīng)的內(nèi)核緩沖區(qū)。

需要注意的是:
1.我們需要避免在全緩沖策略下在還未刷新數(shù)據(jù)前關(guān)閉文件描述符導(dǎo)致數(shù)據(jù)并未刷新
2.通過(guò)關(guān)閉1號(hào)文件描述符,再讓打開(kāi)的文件取占位,就可以達(dá)到行刷新的目的

在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

標(biāo)題名稱(chēng):Linux重定向原理與系統(tǒng)調(diào)用dup2-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://aaarwkj.com/article14/cchcde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶(hù)體驗(yàn)電子商務(wù)、關(guān)鍵詞優(yōu)化、面包屑導(dǎo)航、建站公司、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

精品一级人片内射视频| 宅男午夜一区二区三区| 自拍偷拍视频欧美第一页| 亚洲欧美日韩国产一区二区三区 | 日本精品国产一区二区在线| 久久精品亚洲熟女av蜜臀| 日韩av天堂在线观看| 亚洲国产a级一区二区| 人妻天堂久久一区二区三区| 国产亚洲精品免费专线视频| 亚洲av男人电影天堂| 美女丝袜美腿魅惑男人| 亚洲免费视频区一区二| 欧美日韩另类综合久久久| 妇女自拍偷自拍亚洲精品| 91亚色在线免费观看| 中文字幕亚洲入口久久| 性生活的视频免费观看麻豆| 熟女人妻精品一二三四| 91精品夜夜夜一区二区| 色哟哟视频免费在线观看| 精品一区二区亚洲精品| 成人精品颜射少妇内射| 日本欧美精品一区二区精选| 看看美女阴逼毛茸茸的| 欧美伦理片三级在线观看| 人妻中出中文字幕一区| 青青草免费在线视频蜜臀| 中文字幕日本人妻乱码| 加勒比在线观看欧美一区| 日本中文字幕一二三四区| 日韩精品中文字幕人妻系列| 欧美日韩精品免费在线观看| 日日添夜夜躁欧美一区二区| 国产综合中文字幕不卡| 色噜噜色一区二区三区| 日韩av中文一区二区| 亚洲国产精品自拍视频| 亚洲日本欧洲二区精品| 亚洲中文波霸中文字幕| 亚洲国产精品综合色在线|