getpeername系统调用及示例

getpeername系统调用及示例 我们已经介绍了 getsockname,所以接下来应该介绍 getpeername。 1. 函数介绍 getpeername 是一个 Linux 系统调用,用于获取已连接套接字的对方(peer)的协议地址。这个地址包含了与本端套接字建立连接的那个远程主机的 IP 地址 和 端口号。 你可以把它想象成查看已接通电话的对方号码: * 你和朋友正在通话(套接字已连接)。 * 你想知道现在和你通话的人的电话号码是多少(对方地址)。 * getpeername 就是查看这个对方号码的功能。 这对于以下场

Read More

getpmsg系统调用及示例

getpmsg 函数详解 1. 函数介绍 getpmsg 是 System V STREAMS 接口中的一个函数,用于从 STREAMS 设备或管道中接收带优先级的消息。可以把 STREAMS 想象成一个”智能分拣系统”——消息根据优先级被分类处理,getpmsg 就是从这个系统中按指定优先级取下消息的工具。 与 getmsg 不同,getpmsg 提供了更精细的优先级控制,允许你指定要接收的消息类型(普通优先级、高优先级等),就像邮件分拣系统可以按紧急程度分拣邮件一样。 getpmsg 是 System V STREAMS 接口中的函数,用于从 STREAMS 设备接收带优先级的消息

Read More

getppid系统调用及示例

getppid - 获取父进程ID getppid是Linux系统调用,用于获取当前进程的父进程ID(PPID)。该函数无需参数,总是成功返回父进程ID,在进程管理和监控中非常有用。示例代码展示了基础用法、父子进程关系、孤儿进程现象以及构建进程树结构,通过getpid()、fork()等相关函数配合使用,可完整呈现Unix/Linux的进程层级关系。当父进程终止后,子进程PPID会变为1(init进程),成为孤儿进程。 1. 函数介绍 getppid 是一个 Linux 系统调用,用于获取当前进程的父进程 ID(Parent Process ID)。每个进程(除了初始进程)都有一个父进程,

Read More

getpriority系统调用及示例

getpriority - 获取进程或进程组的优先级 getpriority 是 Linux 系统调用,用于查询进程、进程组或用户的调度优先级。优先级范围 -20(最高)到 +19(最低)。函数原型为 int getpriority(int which, id_t who),参数 which 指定查询类型(PRIO_PROCESS/PRIO_PGRP/PRIO_USER),who 为对应 ID。成功返回优先级值,失败返回 -1 并设置 errno。需注意返回值可能为 -1(成功时),应先清除 errno 再调用。示例代码展示了如何获取当前进程、进程组和用户的优 1. 函数介绍 getpri

Read More

getrandom系统调用及示例

getrandom 函数详解 getrandom是Linux系统中获取高质量随机数的系统调用,从内核熵池中提取真正的随机数据。它比传统rand()更安全可靠,适用于加密、安全令牌等场景。函数原型为ssize_t getrandom(void *buf, size_t buflen, unsigned int flags),支持GRND_RANDOM(阻塞模式)和GRND_NONBLOCK(非阻塞模式)两种标志位。文章详细介绍了函数参数、返回值、错误处理和示例代码,展示了如何生成随机数据和使用不同标志位。getrandom相比传统随机数设备更安全高效,是安全敏感应用的理想选择。 1. 函数介

Read More

getresgid系统调用及示例

getresgid - 获取进程的真实、有效和保存的组ID 1. 函数介绍 getresgid 是一个 Linux 系统调用,用于同时获取当前进程的真实组 ID(Real Group ID)、有效组 ID(Effective Group ID)和保存的设置组 ID(Saved Set-group-ID)。 2. 函数原型 1 2 3 4 5 #include #include int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); 3. 功能对比 函数功能参数getresuid

Read More

getresuid系统调用及示例

getresuid - 获取进程的真实、有效和保存的用户ID getresuid和getresgid是Linux系统调用,用于获取进程的用户和组ID信息。getresuid获取真实用户ID、有效用户ID和保存的设置用户ID;getresgid获取对应的组ID。两者都通过指针参数返回三个ID值,成功返回0,失败返回-1并设置errno。示例代码展示了如何获取并分析这些ID信息,包括错误处理和权限状态分析。相关函数包括getuid、setuid等用于用户/组ID管理的系统调用。 1. 函数介绍 getresuid 是一个 Linux 系统调用,用于同时获取当前进程的真实用户 ID(Real U

Read More

getitimer系统调用及示例

getitimer系统调用及示例 继续学习 Linux 系统编程中的重要函数。这次我们介绍 getitimer 和 setitimer 函数,它们用于管理和控制进程的间隔计时器(interval timers)。这些计时器可以在指定的时间后产生信号(通常是 SIGALRM, SIGVTALRM, SIGPROF),从而实现定时执行代码、测量程序执行时间等功能。 本文介绍了 Linux 系统编程中的间隔计时器函数 getitimer 和 setitimer,它们用于管理和控制进程的定时器。这些计时器可以在指定时间后产生信号(如 SIGALRM),实现定时执行代码或测量程序执行时间等功能。se

Read More

fremovexattr系统调用及示例

fremovexattr - 删除文件的扩展属性(通过文件描述符) 1. 函数介绍 fremovexattr 是一个 Linux 系统调用,用于删除指定文件的特定扩展属性(extended attribute)。与 removexattr 不同,fremovexattr 通过文件描述符而不是文件路径来操作文件,这样可以避免在多线程环境中因文件重命名或删除而导致的竞态条件。 扩展属性是文件系统提供的一种机制,允许用户为文件关联额外的元数据,这些元数据以键值对的形式存储。删除扩展属性可以清理不再需要的元数据信息。 2. 函数原型 1 2 3 4 5 #include Read More

fstatfs系统调用及示例

fstatfs 函数详解 1. 函数介绍 fstatfs 是 Linux 系统中用于获取文件系统统计信息的系统调用。可以把这个函数想象成一个”文件系统体检工具”——当你给它一个已打开的文件描述符时,它会告诉你这个文件所在文件系统的详细信息,比如总空间多大、已用多少、还剩多少、支持什么特性等等。 就像你去体检时医生会检查你的身高、体重、血压等指标一样,fstatfs 会检查文件系统的”健康状况”和”基本信息”。 2. 函数原型 1 2 3 4 #include /* 或者 #include */ int fstatfs

Read More