当前位置: 首页 > news >正文

Linux unistd.h 包含功能

unistd.h 是 POSIX 标准定义的头文件,包含了大量与 Unix/Linux 系统交互的函数声明、宏和类型定义。其功能覆盖进程控制、文件操作、输入输出、系统信息等多个方面。以下是其主要包含的功能分类及具体内容:

1. 类型定义

  • pid_t: 进程ID类型(通常为 int
  • uid_t: 用户ID类型
  • gid_t: 组ID类型
  • off_t: 文件偏移量类型(用于 lseek 等函数)
  • ssize_t: 带符号的字节计数类型(用于 read/write 返回值)
  • mode_t: 文件权限模式类型

2. 进程控制与管理

  • 进程创建与销毁

    • fork(): 创建新进程(父进程返回子进程ID,子进程返回0)
    • execve(const char *path, char *const argv[], char *const envp[]): 替换进程镜像(执行新程序)
    • _exit(int status): 立即终止进程(不执行清理操作)
    • exit(int status): 终止进程(会执行清理操作,如刷新缓冲区)
  • 进程ID与关系

    • getpid(): 获取当前进程ID
    • getppid(): 获取父进程ID
    • getuid(): 获取实际用户ID
    • geteuid(): 获取有效用户ID
    • getgid(): 获取实际组ID
    • getegid(): 获取有效组ID
  • 进程暂停与等待

    • pause(): 使进程暂停,直到收到信号
    • sleep(unsigned int seconds): 暂停进程指定秒数
    • usleep(useconds_t usec): 暂停进程指定微秒数(已被 nanosleep 替代)

3. 文件与I/O操作

  • 基础读写

    • read(int fd, void *buf, size_t count): 从文件描述符读取数据
    • write(int fd, const void *buf, size_t count): 向文件描述符写入数据
    • close(int fd): 关闭文件描述符
  • 文件偏移

    • lseek(int fd, off_t offset, int whence): 移动文件读写指针(whence 可为 SEEK_SET/SEEK_CUR/SEEK_END
  • 文件描述符操作

    • dup(int fd): 复制文件描述符(返回最小可用新描述符)
    • dup2(int oldfd, int newfd): 将 oldfd 复制到 newfd(若 newfd 已打开则先关闭)
    • fcntl(int fd, int cmd, ...): 文件控制(如修改描述符属性、文件锁等)
  • 管道创建

    • pipe(int pipefd[2]): 创建匿名管道(pipefd[0] 读端,pipefd[1] 写端)

4. 目录操作

  • chdir(const char *path): 改变当前工作目录
  • fchdir(int fd): 通过文件描述符改变工作目录(fd 指向目录)
  • getcwd(char *buf, size_t size): 获取当前工作目录路径
  • rmdir(const char *path): 删除空目录

5. 文件权限与属性

  • chmod(const char *path, mode_t mode): 修改文件权限
  • fchmod(int fd, mode_t mode): 通过文件描述符修改权限
  • chown(const char *path, uid_t owner, gid_t group): 修改文件所有者和组
  • fchown(int fd, uid_t owner, gid_t group): 通过文件描述符修改所有者和组
  • access(const char *path, int mode): 检查文件访问权限(mode 可为 R_OK/W_OK/X_OK/F_OK

6. 系统资源与限制

  • getpagesize(): 获取系统页面大小
  • sysconf(int name): 获取系统配置参数(如 _SC_PAGESIZE 对应页面大小)
  • ulimit(int cmd, ...): 获取/设置进程资源限制(如文件大小限制)

7. 其他常用功能

  • alarm(unsigned int seconds): 定时发送 SIGALRM 信号
  • getopt(int argc, char *const argv[], const char *optstring): 解析命令行选项
  • isatty(int fd): 判断文件描述符是否指向终端
  • sync(): 将缓冲区数据同步到磁盘
  • unlink(const char *path): 删除文件(或符号链接)

注意事项

  • unistd.h 是 Unix-like 系统(Linux、macOS 等)的标准头文件,Windows 系统不原生支持(需通过 Cygwin 或 MinGW 等工具模拟)。
  • 部分函数可能因系统版本或配置略有差异,建议结合 man 手册(如 man 2 read)查看详细用法。

这些功能是编写系统级程序、命令行工具或与操作系统交互的应用的基础。

http://www.dtcms.com/a/337676.html

相关文章:

  • 基于 Ansible 与 Jinja2 模板的 LNMP 环境及 WordPress 自动化部署实践
  • 【C语言】gets和getchar的区别
  • JVM 面试精选 20 题
  • 达梦数据库DCA通关宝典,数据库管理运维学习
  • Java面试题及答案整理(2025年互联网大厂最新版,持续更新)
  • 从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
  • 亲测可用 [安卓]《神秘来电》V1.1无需登入无广告离线打开即用手机模拟发起虚假来电免费版
  • HTTPS面试题(更新中...)
  • 【速通】深度学习模型调试系统化方法论:从问题定位到性能优化
  • Vivado Design Flow
  • 深度学习在订单簿分析与短期价格预测中的应用探索
  • Windows 安装使用 MySQL
  • 44 C++ STL模板库13-容器5-容器适配器-队列(queue)
  • 生鲜冷冻商城系统冷链配送系统功能模块实现
  • Stability AI技术浅析(三):Stable LM模型
  • 【集合框架Map进阶】
  • 【VUE】Vue3 绘制 3D 蓝图利器 Grid Plan
  • 【Java】浅谈ThreadLocal
  • 【WSL2笔记10】WSL-Ubuntu 环境下 ComfyUI 本地部署性能最大化指南
  • 生产环境慎用 context.Background ():你的系统可能在 “空转”
  • CVPR 2025|英伟达联合牛津大学提出面向3D医学成像的统一分割基础模型
  • 【统刷】专题完结,题单汇总
  • 抽象工厂设计模式 Abstract Factory
  • Layui COP证书管理系统
  • html页面打水印效果
  • 码上爬第十八题【协程+webpack】
  • mongodb的高可用部署
  • ParallelWaveGAN-KaldiFree:纯Pytorch的PWG
  • 【datawhale组队学习】RAG技术 - TASK01
  • SQLsever基本操作