欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Node.jsapi中POSIX標(biāo)準(zhǔn)的示例分析

這篇文章主要介紹Node.js api中POSIX標(biāo)準(zhǔn)的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

10年的平昌網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整平昌建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“平昌網(wǎng)站設(shè)計(jì)”,“平昌網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

如果你用過 Node.js 的 api,會(huì)不會(huì)覺得奇怪,為什么 api 的名字是這樣的:

比如創(chuàng)建目錄:

const fs = require('fs');

fs.mkdir('/a/b/c', { recursive: true }, (err) => {
  if (err) throw err;
});

創(chuàng)建進(jìn)程:

const childProcess = require('child_process');

childProcess.fork('a/b/c.js');
childProcess.execFile('a/b/dddd');
childProcess.exec('"/path/to/test file/test.sh" arg1 arg2');
childProcess.spawn('ls', ['-lh', '/usr']);

mkdir、fork、exec、spawn 等,這些名字是怎么起的?

如果你用過 linux 命令或者 c 的函數(shù)庫,你會(huì)發(fā)現(xiàn)這些 api 在命令和 c 函數(shù)庫中也都是這個(gè)名字。

為什么會(huì)這樣呢?這些 api 是什么標(biāo)準(zhǔn)么?

沒錯(cuò),這就是 POSIX 標(biāo)準(zhǔn)

POSIX 是什么

POSIX 是 portable operating system interface (可移植的操作系統(tǒng)接口)的縮寫,x 是 unix 的意思,也就是從 unix 繼承而來。

因?yàn)椴煌僮飨到y(tǒng)如果提供的函數(shù)和系統(tǒng)調(diào)用不一樣,那么基于操作系統(tǒng)的上層應(yīng)用程序的源代碼就不一樣,這就導(dǎo)致了一個(gè)平臺(tái)寫的代碼沒法在另一個(gè)平臺(tái)上編譯。

怎么辦呢?

如果每個(gè)操作系統(tǒng)提供的 api 一樣呢?不管操作系統(tǒng)底層怎么實(shí)現(xiàn)這些能力的,只要暴露出同樣的 api 給應(yīng)用程序即可,這樣源代碼是跨平臺(tái)的,在不同的操作系統(tǒng)上編譯之后就能跑起來。

這個(gè)統(tǒng)一操作系統(tǒng)暴露的 api 的標(biāo)準(zhǔn)就是 POSIX。

可以把這個(gè) POSIX 標(biāo)準(zhǔn)理解為 ts 里面定義的一個(gè) interface,只要實(shí)現(xiàn)了這個(gè) interface 的 api 就是兼容 POSIX 標(biāo)準(zhǔn)的。

POSIX 最早是 unix 擴(kuò)展而來,linux 實(shí)現(xiàn)了這個(gè) POSIX 的標(biāo)準(zhǔn),而后來 windows 迫于壓力,也不得不兼容了 POSIX 標(biāo)準(zhǔn),不然很多 linux 的應(yīng)用程序在 windows 上就跑不起來。我們常用的 osx 也是。

所以說,POSIX 是操作系統(tǒng)向上層應(yīng)用提供能力的一些標(biāo)準(zhǔn)接口,包括系統(tǒng)調(diào)用、c 函數(shù)庫、shell 命令。

所謂的標(biāo)準(zhǔn)是指被 ISO 國際標(biāo)準(zhǔn)化組織承認(rèn)的,這是一個(gè)國際組織,成員遍布各個(gè)國家,是制定各種國際標(biāo)準(zhǔn)的組織。POSIX 就是 ISO/IEC 9945 標(biāo)準(zhǔn)(IEC 是電子方向的標(biāo)準(zhǔn)化組織)。其實(shí) POSIX 是 IEEE 提出來的,這是一個(gè)美國的標(biāo)準(zhǔn)化組織,他提出的標(biāo)準(zhǔn)被 ISO 承認(rèn)會(huì)成為國際標(biāo)準(zhǔn),比如 POSIX 就是他們提出的 IEEE Std 1003 標(biāo)準(zhǔn),現(xiàn)在被 ISO 承認(rèn),成為了 ISO/IEC 9945 標(biāo)準(zhǔn)。

POSIX 有哪些內(nèi)容

我們來看一下支持 posix 的 linux 提供了哪些系統(tǒng)調(diào)用(系統(tǒng)調(diào)用指的是在內(nèi)核代碼中提供的程序):

進(jìn)程控制:

  • fork 創(chuàng)建一個(gè)新進(jìn)程

  • execv 運(yùn)行可執(zhí)行文件

  • exit 中止進(jìn)程

文件讀寫

  • open 打開文件

  • close 關(guān)閉文件描述符

  • write 寫文件

  • read 讀文件

  • truncate 截?cái)辔募?/p>

  • fsync 把文件在內(nèi)存的部分寫入磁盤

文件系統(tǒng)相關(guān)

  • access 確定文件是否可存取

  • chdir 改變當(dāng)前工作目錄

  • chown 改變文件的屬主或者用戶組

  • stat 取文件狀態(tài)信息

  • mkdir 創(chuàng)建目錄

  • symlink 創(chuàng)建符號(hào)鏈接

  • unlink 刪除鏈接

這些系統(tǒng)調(diào)用很多在 Node.js 里有同名的 api,shell 也有同名的命令:

比如:

fs.stats
fs.access
fs.chown
fs.mkdir

fs.open
fs.close
fs.read
fs.write

child_process.fork
child_process.exec
child_process.execFile

Node.js api 的特點(diǎn)

Node.js 是一個(gè) js 的運(yùn)行時(shí),基于 v8 來注入很多提供操作系統(tǒng)能力的 api 給 js 調(diào)用,而這些 api 的設(shè)計(jì)很多都是直接用的 POSIX 標(biāo)準(zhǔn)的 api 名字,沒有做很多抽象。

Java 的 JRE(java runtime) 也提供了操作系統(tǒng)能力的抽象,但是那些 api 卻和操作系統(tǒng) POSIX 的 api 關(guān)系不大,而且融入了很多設(shè)計(jì)模式的東西,比如 io 流的裝飾器模式。

Node.js 的 api 的特點(diǎn)就是抽象并不多,而且很多 api 名字和 linux 命令都很像,貼近 POSIX 標(biāo)準(zhǔn)。所以學(xué)習(xí) Node.js 的時(shí)候還是要學(xué)習(xí)下 linux 命令的,這兩者在設(shè)計(jì)上有一定的關(guān)系。

以上是“Node.js api中POSIX標(biāo)準(zhǔn)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當(dāng)前名稱:Node.jsapi中POSIX標(biāo)準(zhǔn)的示例分析
文章起源:http://www.chinadenli.net/article42/ieoihc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作全網(wǎng)營銷推廣移動(dòng)網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)外貿(mào)網(wǎng)站建設(shè)企業(yè)建站

廣告

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

搜索引擎優(yōu)化