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

POSIX是一组标准,确保跨不同操作系统开发的应用程序可移植性。它定义了系统调用、库函数和命令行工具的接口。在Linux下,POSIX涵盖shell、工具、系统调用、库函数等多个方面,并提供了丰富的API供开发者使用,如文件操作、进程控制和信号处理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是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】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

最后一个bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值