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

unistd.h 常用函数速查表

在这篇文章中,我们将整理一份 unistd.h 常用函数速查表,便于快速查找和记忆,涵盖文件 I/O、进程管理、系统信息、用户/组信息等方面。


unistd.h 常用函数速查表(POSIX/Linux/macOS)

1. 文件与 I/O 操作

函数说明示例
int access(const char *path, int mode)检查文件权限/存在性(R_OK 读,W_OK 写,X_OK 执行,F_OK 存在)access("file.txt", R_OK)
off_t lseek(int fd, off_t offset, int whence)改变文件指针位置(SEEK_SET, SEEK_CUR, SEEK_ENDlseek(fd, 0, SEEK_SET)
ssize_t read(int fd, void *buf, size_t count)从文件描述符读取数据read(fd, buf, 100)
ssize_t write(int fd, const void *buf, size_t count)向文件描述符写入数据write(fd, buf, len)
int close(int fd)关闭文件描述符close(fd)

2. 进程管理

函数说明示例
pid_t fork(void)创建子进程pid_t pid = fork();
pid_t getpid(void)获取当前进程 PIDgetpid()
pid_t getppid(void)获取父进程 PIDgetppid()
void _exit(int status)立即退出进程(不执行清理)_exit(0)
int execv(const char *path, char *const argv[])启动新程序(替换当前进程镜像)execv("/bin/ls", args)

3. 系统 & 休眠

函数说明示例
unsigned int sleep(unsigned int seconds)秒级休眠sleep(2)
int usleep(useconds_t usec)微秒级休眠usleep(500000)
long sysconf(int name)获取系统配置信息(如 _SC_NPROCESSORS_ONLN CPU 数)sysconf(_SC_PAGESIZE)
long pathconf(const char *path, int name)获取路径上的系统限制pathconf("/", _PC_NAME_MAX)

4. 用户 / 组信息

函数说明示例
uid_t getuid(void)获取实际用户 IDgetuid()
uid_t geteuid(void)获取有效用户 IDgeteuid()
gid_t getgid(void)获取实际组 IDgetgid()
gid_t getegid(void)获取有效组 IDgetegid()

5. 常用宏定义

说明
R_OK可读权限
W_OK可写权限
X_OK可执行权限
F_OK文件是否存在
SEEK_SET文件开头
SEEK_CUR当前位置
SEEK_END文件末尾

6. 示例:检查文件并读取内容

#include <unistd.h>
#include <fcntl.h>
#include <iostream>int main() {if (access("test.txt", R_OK) != 0) {std::cerr << "File not readable or not exist.\n";return 1;}int fd = open("test.txt", O_RDONLY);if (fd == -1) {perror("open");return 1;}char buf[100];ssize_t n = read(fd, buf, sizeof(buf) - 1);if (n >= 0) {buf[n] = '\0';std::cout << "Content: " << buf << "\n";}close(fd);return 0;
}
http://www.dtcms.com/a/343687.html

相关文章:

  • 论文精读(三)|智能合约漏洞检测技术综述
  • 《WINDOWS 环境下32位汇编语言程序设计》第7章 图形操作(1)
  • Redis内存架构解析与性能优化实战
  • 通用的嵌入式 Linux 系统镜像制作流程
  • STM32F103RC的USB上拉电阻1.5K
  • MongoDB 从入门到实践:全面掌握文档型 NoSQL 数据库核心操作
  • 基于Node.js服务端的社区报修管理系统/基于express的在线报修管理系统
  • (论文速读)RandAR:突破传统限制的随机顺序图像自回归生成模型
  • 基于C#的宠物医院管理系统/基于asp.net的宠物医院管理系统
  • 开源 python 应用 开发(十)音频压缩
  • AI时代的“双刃剑”:效率革命与人文焦虑的碰撞
  • week3-[二维数组]小方块
  • 靶机 - SAR
  • UVa1472/LA4980 Hanging Hats
  • C++的指针和引用:
  • C++部署Yolov5模型流程记录
  • flutter geolocator Android国内定位失败问题解决
  • Redis事务全解析:从秒杀案例看原子操作实现
  • C#_接口设计:角色与契约的分离
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day10
  • 树莓派采集、计算机推理:基于GStreamer的YOLOv5实现方案
  • Codeforces Round 1043 (Div.3)
  • AI生成技术报告:GaussDB与openGauss的HTAP功能全面对比
  • Vue 插槽(Slots)全解析2
  • 大数据毕业设计推荐:基于Hadoop+Spark的手机信息分析系统完整方案
  • 使用GMail API 发送邮箱
  • 在Kubernetes中部署一个单节点Elasticsearch
  • 集成电路学习:什么是Camera Calibration相机标定
  • Effective C++ 条款55:熟悉Boost库
  • 8.21-8.22网络编程——词典