sigaltstack系统调用及示例

sigaltstack 函数详解 1. 函数介绍 sigaltstack 系统调用及示例,sigaltstack是Linux系统调用,用于设置和获取信号处理程序的备用栈(alternate signal stack)。当进程收到信号时,内核通常在当前栈上执行信号处理程序。使用 sigaltstack 可以为信号处理程序指定一个独立的栈空间,这对于处理栈溢出等异常情况特别有用。 2. 函数原型 1 2 3 #include int sigaltstack(const stack_t *ss, stack_t *oss); 3. 功能 sigaltst

Read More

getcwd系统调用及示例

getcwd - 获取当前工作目录 getcwd - 获取当前工作目录 函数介绍 getcwd系统调用用于获取进程当前的工作目录路径。它返回一个以null结尾的字符串,表示当前目录的绝对路径名。 函数原型 1 2 3 4 #include char *getcwd(char *buf, size_t size); 功能 获取进程当前工作目录的绝对路径名。 参数 * char *buf: 指向存储路径名的缓冲区 * size_t size: 缓冲区大小(字节) 返回值 * 成功时返回指向缓冲区的指针(buf) 失败

Read More

getgroups系统调用及示例

getgroups - 获取进程的补充组列表 1. 函数介绍 getgroups - 获取进程的补充组列表 getgroups 是一个 Linux 系统调用,用于获取当前进程所属的补充组(supplementary groups)列表。除了进程的主要组 ID(由 getgid() 返回)之外,进程还可以属于多个补充组,这些组决定了进程对文件和资源的额外访问权限。 补充组机制是 Unix/Linux 系统中实现灵活访问控制的重要组成部分,允许用户同时属于多个组以获得相应的权限。 2. 函数原型 1 2 3 4 5 #include #include Read More

semctl系统调用及示例

semctl - 信号量控制 函数介绍 semctl系统调用用于控制System V信号量集,可以获取和设置信号量的各种属性和状态。它是信号量管理的重要工具,用于初始化、查询、修改和删除信号量。 semctl - 信号量控制(https://www.calcguide.tech/2025/08/18/semctl系统调用及示例/) 函数介绍semctl系统调用用于控制System V信号量集,可以获取和设置信号量的各种属性和状态。它是信号量管理的重要工具,用于初始化、查询、修改和删除信号量。 函数原型 1 2 3 4 5 6 #include #incl

Read More

semget系统调用及示例

semget - 获取信号量集标识符 函数介绍 semget系统调用用于创建或访问一个System V信号量集。信号量是一种用于进程间同步的机制,主要用于控制对共享资源的访问,防止多个进程同时访问同一资源造成冲突。 函数原型 1 2 3 4 5 6 #include #include #include int semget(key_t key, int nsems, int semflg); 功能 创建新的信号量集或获取现有信号量集的标识符。 参数 key_t key: 信号量集的键值 * IPC

Read More

semop系统调用及示例

semop - 信号量操作 函数介绍 semop系统调用用于对System V信号量集执行操作。它是信号量机制的核心操作函数,通过原子性地执行一系列信号量操作来实现进程同步。](https://www.calcguide.tech/2025/08/18/semop系统调用及示例/) 函数原型 1 2 3 4 5 6 #include #include #include int semop(int semid, struct sembuf *sops, unsigned nsops); 功能 对信号量集执

Read More

semtimedop系统调用及示例

semtimedop 函数详解 1. 函数介绍 semtimedop 是Linux系统调用,用于对System V信号量集执行原子操作,并支持超时控制。它是 semop 函数的增强版本,允许指定操作的超时时间,避免无限期阻塞。信号量是进程间同步的重要机制,常用于控制对共享资源的访问。 2. 函数原型 1 2 3 4 5 6 #include #include int semtimedop(int semid, struct sembuf *sops, size_t nsops, const str

Read More

flock系统调用及示例

flock - 文件锁flock系统调用及示例 函数介绍 flock系统调用用于对文件进行加锁操作,实现进程间的文件访问同步。文件锁可以防止多个进程同时修改同一文件,保证数据的一致性。(https://www.calcguide.tech/2025/08/17/flock系统调用及示例/) 函数原型 1 2 3 4 #include int flock(int fd, int operation); 功能 对指定文件描述符对应的文件进行加锁或解锁操作。 参数 * int fd: 文件描述符 int operation: 锁操作类型 * LOC

Read More

getcpu系统调用及示例

getcpu - 获取当前 CPU 和 NUMA 节点信息]() 1. 函数介绍 getcpu 是一个 Linux 系统调用,用于获取当前线程正在运行的 CPU 核心编号和 NUMA(Non-Uniform Memory Access)节点编号。这个函数对于性能分析、负载均衡、线程亲和性设置等场景非常有用。 NUMA 是一种多处理器计算机内存设计,其中内存访问时间取决于内存相对于处理器的位置。了解当前线程在哪个 CPU 核心和 NUMA 节点上运行,有助于优化程序性能。 2. 函数原型 1 2 3 4 5 6 7 #define _GNU_SOURCE #include Read More

pipe系统调用及示例

我们继续学习 Linux 系统编程中的重要函数。这次我们介绍 pipe 函数,它用于创建匿名管道,这是一种在相关进程(如父子进程)之间进行单向数据通信的重要机制。 pipe 函数介绍 1. 函数介绍 pipe 是一个 Linux 系统调用,用于创建一个匿名管道(Anonymous Pipe)。管道是一种半双工(单向)的进程间通信(IPC)机制,数据只能在一个方向上流动。 管道通常用于具有亲缘关系的进程之间通信,最常见的场景是父进程和子进程之间的数据传递。创建管道后,会得到两个文件描述符:一个用于读取(read end),一个用于写入(write end)。写入端写入的数据会被内核缓冲,然

Read More