目录
POSIX 是什么
POSIX 有哪些内容
Node.js api 的特点
总结
首页 web前端 js教程 浅析Node.js api的 POSIX 标准

浅析Node.js api的 POSIX 标准

Sep 02, 2021 am 10:06 AM
api node.js

POSIX 是什么?有哪些内容?下面本篇文章带大家了解一下Node.js api的 POSIX 标准、Node.js api的特点,希望对大家有所帮助!

浅析Node.js api的 POSIX 标准

【推荐学习:《nodejs 教程》】

如果你用过 Node.js 的 api,会不会觉得奇怪,为什么 api 的名字是这样的:

比如创建目录:

const fs = require('fs');

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

创建进程:

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 的函数库,你会发现这些 api 在命令和 c 函数库中也都是这个名字。

为什么会这样呢?这些 api 是什么标准么?

没错,这就是 POSIX 标准

POSIX 是什么

POSIX 是 portable operating system interface (可移植的操作系统接口)的缩写,x 是 unix 的意思,也就是从 unix 继承而来。

因为不同操作系统如果提供的函数和系统调用不一样,那么基于操作系统的上层应用程序的源代码就不一样,这就导致了一个平台写的代码没法在另一个平台上编译。

怎么办呢?

如果每个操作系统提供的 api 一样呢?不管操作系统底层怎么实现这些能力的,只要暴露出同样的 api 给应用程序即可,这样源代码是跨平台的,在不同的操作系统上编译之后就能跑起来。

这个统一操作系统暴露的 api 的标准就是 POSIX。

可以把这个 POSIX 标准理解为 ts 里面定义的一个 interface,只要实现了这个 interface 的 api 就是兼容 POSIX 标准的。

POSIX 最早是 unix 扩展而来,linux 实现了这个 POSIX 的标准,而后来 windows 迫于压力,也不得不兼容了 POSIX 标准,不然很多 linux 的应用程序在 windows 上就跑不起来。我们常用的 osx 也是。

所以说,POSIX 是操作系统向上层应用提供能力的一些标准接口,包括系统调用、c 函数库、shell 命令。

所谓的标准是指被 ISO 国际标准化组织承认的,这是一个国际组织,成员遍布各个国家,是制定各种国际标准的组织。POSIX 就是 ISO/IEC 9945 标准(IEC 是电子方向的标准化组织)。其实 POSIX 是 IEEE 提出来的,这是一个美国的标准化组织,他提出的标准被 ISO 承认会成为国际标准,比如 POSIX 就是他们提出的 IEEE Std 1003 标准,现在被 ISO 承认,成为了 ISO/IEC 9945 标准。

POSIX 有哪些内容

我们来看一下支持 posix 的 linux 提供了哪些系统调用(系统调用指的是在内核代码中提供的程序):

进程控制:

  • fork 创建一个新进程
  • execv 运行可执行文件
  • exit 中止进程

文件读写

  • open 打开文件
  • close 关闭文件描述符
  • write 写文件
  • read 读文件
  • truncate 截断文件
  • fsync 把文件在内存的部分写入磁盘

文件系统相关

  • access 确定文件是否可存取
  • chdir 改变当前工作目录
  • chown 改变文件的属主或者用户组
  • stat 取文件状态信息
  • mkdir 创建目录
  • symlink 创建符号链接
  • unlink 删除链接

这些系统调用很多在 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 的特点

Node.js 是一个 js 的运行时,基于 v8 来注入很多提供操作系统能力的 api 给 js 调用,而这些 api 的设计很多都是直接用的 POSIX 标准的 api 名字,没有做很多抽象。

Java 的 JRE(java runtime) 也提供了操作系统能力的抽象,但是那些 api 却和操作系统 POSIX 的 api 关系不大,而且融入了很多设计模式的东西,比如 io 流的装饰器模式。

Node.js 的 api 的特点就是抽象并不多,而且很多 api 名字和 linux 命令都很像,贴近 POSIX 标准。所以学习 Node.js 的时候还是要学习下 linux 命令的,这两者在设计上有一定的关系。

总结

POSIX 标准是操作系统能力的标准,定义了操作系统应该暴露什么 api 给应用程序,包括 shell 命令、c 函数库、系统调用等标准。POSIX 标准使得应用程序在源码层面是可以跨平台移植的,分别在不同平台做编译即可。

POSIX 是 ISO 承认的国际化标准,最早是由美国的一个标准协会 IEEE 提出的。ISO 是专门定制国际标准的组织,有很多国家的成员参与。

Node.js 的 api 并没有做很多抽象,名字也很大部分和 POSIX 标准的 api 比较像,这是它的特点,相比之下,JRE 暴露给 java 的 api 则做了很多抽象。

因为 Node.js 的 api 很多和 c 函数库、shell 命令比较接近,所以学习 Node.js 结合学习 shell 命令,或者会 c 的可以再学下系统的函数库会有更多的收获。

了解 POSIX,是理解 Node.js api 设计,学好 Node.js 的前提。

更多编程相关知识,请访问:编程视频!!

以上是浅析Node.js api的 POSIX 标准的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在PHP项目中通过调用API接口来实现数据的爬取和处理? 如何在PHP项目中通过调用API接口来实现数据的爬取和处理? Sep 05, 2023 am 08:41 AM

如何在PHP项目中通过调用API接口来实现数据的爬取和处理?一、介绍在PHP项目中,我们经常需要爬取其他网站的数据,并对这些数据进行处理。而许多网站提供了API接口,我们可以通过调用这些接口来获取数据。本文将介绍如何使用PHP来调用API接口,实现数据的爬取和处理。二、获取API接口的URL和参数在开始之前,我们需要先获取目标API接口的URL以及所需的

如何处理Laravel API报错问题 如何处理Laravel API报错问题 Mar 06, 2024 pm 05:18 PM

标题:如何处理LaravelAPI报错问题,需要具体代码示例在进行Laravel开发时,经常会遇到API报错的情况。这些报错可能来自于程序代码逻辑错误、数据库查询问题或是外部API请求失败等多种原因。如何处理这些报错是一个关键的问题,本文将通过具体的代码示例来演示如何有效处理LaravelAPI报错问题。1.错误处理在Laravel

使用Python将API数据保存为CSV格式 使用Python将API数据保存为CSV格式 Aug 31, 2023 pm 09:09 PM

在数据驱动的应用程序和分析领域,API(应用程序编程接口)在从各种来源检索数据方面发挥着至关重要的作用。使用API数据时,通常需要以易于访问和操作的格式存储数据。其中一种格式是CSV(逗号分隔值),它允许有效地组织和存储表格数据。本文将探讨使用强大的编程语言Python将API数据保存为CSV格式的过程。通过遵循本指南中概述的步骤,我们将学习如何从API检索数据、提取相关信息并将其存储在CSV文件中以供进一步分析和处理。让我们深入了解使用Python进行API数据处理的世界,并释放CSV格式的潜

React API调用指南:如何与后端API进行交互和数据传输 React API调用指南:如何与后端API进行交互和数据传输 Sep 26, 2023 am 10:19 AM

ReactAPI调用指南:如何与后端API进行交互和数据传输概述:在现代的Web开发中,与后端API进行交互和数据传输是一个常见的需求。React作为一个流行的前端框架,提供了一些强大的工具和功能来简化这一过程。本文将介绍如何使用React来调用后端API,包括基本的GET和POST请求,并提供具体的代码示例。安装所需的依赖:首先,确保在项目中安装了Axi

如何使用MongoDB开发一个简单的 CRUD API 如何使用MongoDB开发一个简单的 CRUD API Sep 19, 2023 pm 12:32 PM

如何使用MongoDB开发一个简单的CRUDAPI在现代的Web应用程序开发中,CRUD(增删改查)操作是非常常见和重要的功能之一。在本文中,我们将介绍如何使用MongoDB数据库开发一个简单的CRUDAPI,并提供具体的代码示例。MongoDB是一个开源的NoSQL数据库,它以文档的形式存储数据。与传统的关系型数据库不同,MongoDB没有预定义的模式

Oracle API使用指南:探索数据接口技术 Oracle API使用指南:探索数据接口技术 Mar 07, 2024 am 11:12 AM

Oracle是一家全球知名的数据库管理系统提供商,其API(ApplicationProgrammingInterface,应用程序接口)是一种强大的工具,可帮助开发人员轻松地与Oracle数据库进行交互和集成。在本文中,我们将深入探讨OracleAPI的使用指南,向读者展示如何在开发过程中利用数据接口技术,同时提供具体的代码示例。1.Oracle

Oracle API集成策略解析:实现系统间无缝通信 Oracle API集成策略解析:实现系统间无缝通信 Mar 07, 2024 pm 10:09 PM

OracleAPI集成策略解析:实现系统间无缝通信,需要具体代码示例在当今数字化时代,企业内部系统之间需要相互通信和数据共享,而OracleAPI就是帮助实现系统间无缝通信的重要工具之一。本文将从OracleAPI的基本概念和原理入手,探讨API集成的策略,最终给出具体的代码示例帮助读者更好地理解和应用OracleAPI。一、OracleAPI基本

使用Laravel进行RESTful API开发:构建现代化的Web服务 使用Laravel进行RESTful API开发:构建现代化的Web服务 Aug 13, 2023 pm 01:00 PM

使用Laravel进行RESTfulAPI开发:构建现代化的Web服务随着互联网的快速发展,Web服务的需求日益增加。而RESTfulAPI作为一种现代化的Web服务架构方式,具备轻量、灵活、易扩展的特点,因此在Web开发中得到了广泛应用。在本文中,我们将介绍如何使用Laravel框架来构建一个现代化的RESTfulAPI。Laravel是PHP语言中

See all articles