可移植操作系统接口--POSIX

news2024/10/1 23:40:32

什么是POSIX

POSIX(Portable Operating System Interface,可移植操作系统接口)是一个标准,它定义了操作系统接口的一系列规范。POSIX标准最初由IEEE制定,现在由Open Group维护。

POSIX标准的主要目的是为了保证不同操作系统之间的兼容性,使得开发者能够编写可移植的应用程序,而不必担心不同操作系统之间的差异。POSIX标准定义了许多系统调用、库函数和命令行工具,这些都是操作系统提供给应用程序的接口。

POSIX标准包括许多部分,如POSIX.1、POSIX.2、POSIX.4等等。其中,POSIX.1定义了基本的系统调用和库函数,如文件操作、进程管理、信号处理等等。POSIX.2定义了一些额外的命令行工具和库函数,如awk、sed、grep等等。POSIX.4则定义了一些高级功能,如实时操作系统、多线程支持、网络编程等等。

POSIX标准的另一个重要特点是它的可扩展性。如果操作系统提供了额外的功能,可以通过扩展POSIX标准来支持这些功能。这使得POSIX标准能够跟上操作系统的发展,保持其在可移植性方面的优势。

linux下的POSIX

在Linux下,POSIX规范主要包括以下内容:

  1. Shell和工具:包括sh、awk、sed、grep等常用工具以及shell脚本语言。

  2. 系统调用:包括文件I/O、进程管理、信号处理、网络通信、时间管理等。

  3. 库函数:包括C标准库、数学库、字符串库、网络库等。

  4. 头文件:包括标准头文件、网络头文件、系统调用头文件等。

  5. 环境变量和命令行参数:包括PATH、HOME、USER、SHELL等常用环境变量以及命令行参数的解析规则。

  6. 进程间通信:包括管道、信号、共享内存、消息队列等。

  7. 线程和同步:包括线程创建、同步原语、互斥锁、条件变量等。

  8. 文件系统:包括文件和目录操作、文件权限、文件系统接口等。

POSIX常用api

在Linux系统中,POSIX提供了许多函数,包括:

  1. 文件操作函数
  • access():检查文件是否存在并有权限
  • chdir():改变当前工作目录
  • chmod():修改文件权限
  • chown():修改文件所有者和组
  • creat():创建文件
  • dup():复制文件描述符
  • dup2():复制文件描述符并指定新的文件描述符
  • fchown():修改文件所有者和组
  • fcntl():对文件描述符进行控制操作
  • flock():对文件进行加锁和解锁操作
  • ftruncate():截断文件
  • getcwd():获取当前工作目录
  • link():创建文件硬链接
  • lstat():获取符号链接的信息
  • mkdir():创建目录
  • mkfifo():创建命名管道
  • mknod():创建设备文件
  • open():打开文件
  • opendir():打开目录
  • read():读取文件
  • readdir():读取目录
  • readlink():读取符号链接
  • rename():重命名文件或目录
  • rmdir():删除目录
  • stat():获取文件状态信息
  • symlink():创建符号链接
  • truncate():截断文件
  • unlink():删除文件或符号链接
  • utime():修改文件访问和修改时间
  • write():写入文件
  1. 进程控制函数
  • _exit():退出进程
  • abort():异常退出进程
  • alarm():设置定时器
  • atexit():注册进程退出时的函数
  • chroot():改变根目录
  • exec():执行命令
  • fork():创建子进程
  • getpid():获取当前进程ID
  • getppid():获取当前进程的父进程ID
  • getpgid():获取进程组ID
  • getpgrp():获取进程组ID
  • getpriority():获取进程优先级
  • kill():向进程发送信号
  • nice():修改进程优先级
  • pause():挂起进程
  • pipe():创建管道
  • setpgid():设置进程组ID
  • setsid():创建新会话
  • sleep():休眠进程
  • tcgetpgrp():获取前台进程组ID
  • tcsetpgrp():设置前台进程组ID
  • wait():等待子进程结束
  • waitpid():等待指定子进程结束
  1. 信号处理函数
  • raise():向当前进程发送信号
  • sigaction():安装信号处理器
  • sigaddset():将信号添加到信号集中
  • sigdelset():将信号从信号集中删除
  • sigemptyset():清空信号集
  • sigfillset():将所有信号添加到信号集中
  • sigismember():判断信号是否在信号集中
  • signal():设置信号处理函数
  • sigpending():获取未处理的信号集
  • sigprocmask():设置或获取信号屏蔽字
  • sigsuspend():挂起进程,等待信号
  1. 线程控制函数
  • pthread_attr_destroy():销毁线程属性对象
  • pthread_attr_init():初始化线程属性对象
  • pthread_attr_getdetachstate():获取线程分离状态
  • pthread_attr_setdetachstate():设置线程分离状态
  • pthread_create():创建线程
  • pthread_detach():将线程设置为分离状态
  • pthread_equal():判断两个线程ID是否相等
  • pthread_exit():退出线程
  • pthread_join():等待线程结束
  • pthread_mutex_destroy():销毁互斥锁
  • pthread_mutex_init():初始化互斥锁
  • pthread_mutex_lock():加锁
  • pthread_mutex_trylock():尝试加锁
  • pthread_mutex_unlock():解锁
  • pthread_self():获取当前线程ID
  1. 时间和日期函数
  • asctime():将时间转换为字符串
  • clock():获取进程CPU时间
  • ctime():将时间转换为字符串
  • difftime():计算两个时间之间的差值
  • gmtime():将时间转换为UTC时间
  • localtime():将时间转换为本地时间
  • mktime():将时间转换为秒数
  • strftime():格式化时间输出
  • time():获取当前时间
  • gettimeofday():获取当前时间和时区

以上是大部分常用的API,POSIX函数的文档可以在IEEE Std 1003.1标准中找到,该标准定义了Unix和类Unix操作系统的API,许多Unix操作系统提供了man手册,可以在终端中使用man命令来查看POSIX函数的文档。

【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python带你成功复刻热门手机游戏——飞翔的小鸟

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 飞翔的小鸟(游戏英文名:Flappy Bird) 一款由越南独立开发者开发的手机游戏,是之前非常流行的一款手机游戏 小游戏目标:让小鸟穿过管子,不要碰到任何物体…

大数据是什么?发展前景怎么样

关于大数据的解释,比较官方的定义是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。简单来说,大数据就是结构化…

CAD崩溃后自动保存的文件在哪里?

CAD崩溃后自动保存的文件在哪里?相信这个问题很多设计师小伙伴在CAD绘图过程中都曾遇到过,这也是CAD常见问题之一。本节内容小编就以浩辰CAD软件为例来给大家介绍一下软件崩溃后CAD自动保存的文件在哪里以及打开方式。 CAD崩溃后自动保存文件位置&#…

GWAS全基因组关联分析工具GAPIT最新版的安装教程与报错解决方案

GWAS工具GAPIT最新版 本篇笔记主要内容是GWAS分析软件GAPIT最新版的安装和使用教程,包括常见的报错以及解决方案,主要出错位置在LDheatmap、stringi、nloptr、lme4等,测试安装的环境是东方天意的ECS云服务器(Linux centos7&#x…

七、延时队列

1、延时队列的概念 队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素希望在指定时间到了以后被取出处理 延时队列就是用来存放需要在指定时间被处理的元素的队列 2、延时队列使用的场景 订单在十分钟之内未支付则自动取消 …

SAP Cloud Platform会抛弃ABAP吗

很早之前自己写的文章,重新发布一下。 别担心,该来的总会来,该走的也留不住! - 剧情概要 - SAP Cloud Platform发布已经有一段时间了,自SAP云平台发布以来,很多人担心的一个问题是:在SAP云平…

【测试】HD-G2L-IO评估板测试结果表

1. 测试对象HD-G2L-IOT基于HD-G2L-CORE V2.0工业级核心板设计,双路千兆网口、双路CAN-bus、2路RS-232、2路RS-485、DSI、LCD、4G/5G、WiFi、CSI摄像头接口等,接口丰富,适用于工业现场应用需求,亦方便用户评估核心板及CPU的性能。H…

数据分析师常见问题(1)

1).sql三种排序的区别 2).几种连接方式 3).union和union all的区别 4) .drop和delete的区别 5).有关机器学习random forest 和xgboost的区别 6) .SVM原理 SVM是在特征空间上找到最佳的分离超平面,使得训练集上的正负样…

Win10使用ssh root用户登录centos7主机

1 、用SSH root用户登录Centos主机; 2 、检查centos是否装了epel库 执行命令 rpm -qa|grep epel 没有,需要安装 yum install epel-release 3 、安装xrdp yum install xrdp 4 、安装tigervnc-server yum install tigervnc-server 5 、为用户root…

如何通过SWTO分析法,加强项目风险管理?

1、什么是SWTO分析法 SWTO分析法是态势分析法,是根据企业自身的既定内在条件,对其优势、劣势、外部机会和危险进行分析,依照矩阵形式排列,将各种因素相互匹配分析的企业战略分析方法。 通过SWTO分析法 加强项目风险管理​ …

数学小课堂:数学和哲学的互动关系(自洽的哲学思想受益于数学思维)

文章目录 引言I 数学是“有底”的学问(止于公理)II 数学对哲学的影响2.1 哲学思想受益于数学思维2.2 笛卡尔的贡献2.3 莱布尼茨的哲学思想III 哲学对数学的影响引言 数学和科学各个分支之间在方法上却具有相通性和普适性,这些通用的方法常常让很多学科同时受益,依靠数学逻…

Maven 创建项目

在我们 maven 项目中的结构为 src/main/java —— 存放项目的.java 文件 src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件 src/test/java —— 存放所有单元测试ava 文件,如 JUnit 测试类 src/test/resources —— 测试资源文件…

跑步用入耳的好还是挂耳的、最好用的运动耳机分享

健身房经常会播放一些节奏较快的歌曲,这样能够激发大家在运动过程中的动力,所以运动时聆听音乐确实比较有效果,居家运动、室外跑步时选择运动耳机就变成了刚需,不过一款适合自己的运动耳机确实是比较难找的,首先不能影…

算法刷题总结 (四) 动态规划

算法总结4 动态规划一、动态规划1.1、基础问题11.1.1、509. 斐波那契数列1.1.2、70. 爬楼梯1.1.3、746. 使用最小花费爬楼梯1.2、基础问题21.2.1、62. 不同路径1.2.2、63. 不同路径Ⅱ1.2.3、343. 整数拆分1.2.4、96. 不同的二叉搜索树1.3、背包问题1.3.1、01背包1.3.1.1、单次选…

现代卷积神经网络之稠密连接网络(DenseNet),并对CFIAR10训练

专栏:神经网络复现目录 本章介绍的是现代神经网络的结构和复现,包括深度卷积神经网络(AlexNet),VGG,NiN,GoogleNet,残差网络(ResNet),稠密连接网络…

pikachu靶场CSRF之TOKEN绕过

简介 Pikachu靶场中的CSRF漏洞环节里面有一关CSRF TOKEN,这个关卡和其余关卡稍微有点不一样,因为表单里面存在一个刷新就会变化的token,那么这个token是否能绕过呢?接下来我们来仔细分析分析 实战过程 简单尝试 先利用任意一个…

CNCF x Alibaba云原生技术公开课 第三章 kubernetes核心概念

1、Kubernetes概念 核心功能 服务的发现与负载的均衡容器的自动装箱,我们也会把它叫做 scheduling,就是“调度”,把一个容器放到一个集群的某一个机器上Kubernetes 会帮助我们去做存储的编排,让存储的声明周期与容器的生命周期能…

SpringCloud-高级篇(一)

目录: (1)初识Sentinel-雪崩问题的解决方案 (2)服务保护Sentinel和Hystrix对比 (3)Sentinel初始-安转控制台 (4)整合微服务和Sentinel 微服务高级篇 (1&…

unity开发知识点小结04

混合动画 在动画器控制器中创建从新混合树,也就是创建混合动画 然后进入混合动画,选择混合类型为1D(表示传递参数只有一个),并且为此混合状态添加两个动画,并且设定混合状态参数为何值得时候启用相应动画…

Python中函数的分类、创建和调用,你真的懂了吗

文章目录前言一、函数分类二、创建函数三、调用函数前言 在前面的博客中,所有编写的代码都是从上到下依次执行的,如果某段代码需要多次使用,那么需要将该段代码复制多次,这种做法势必会影响开发效率,在实际项目开发中是…