PACKET_HOST等相关宏定义介绍

PACKET_HOST等相关宏定义介绍 核心含义: PACKET_HOST 是 Linux 内核中定义的一个常量(通常在头文件 中),它表示捕获到的网络数据包的目的地是本机。 详细说明: 1. 适用场景: 当你使用 AF_PACKET / PF_PACKET 套接字(也称为 SOCK_RAW + ETH_P_ALL 或 SOCK_DGRAM)进行原始网络链路层数据包捕获时,会接触到它。 ◦ 这种类型的套接字允许你的程序直接接收流经网络接口(网卡)的底层数据包,包括不是发给本机的包(如果你开启了混杂模式)。 2. 来源和作用: ◦当你的原始套

Read More

sysinfo系统调用及示例

sysfs 和 sysinfo 函数详解 1. 函数介绍 sysfs sysfs 是Linux内核提供的虚拟文件系统,用于导出内核对象的信息到用户空间。它以文件和目录的形式呈现系统硬件、驱动程序、设备状态等信息,是现代Linux系统管理和监控的重要接口。 sysinfo sysinfo 是Linux系统调用,用于获取系统的整体统计信息,包括内存使用情况、系统负载、运行时间等。它提供了一种编程方式来获取系统状态信息。 2. 函数原型 sysfs 1 2 3 4 5 6 7 #include // 需要安装libsysfs-dev包 //

Read More

syslog系统调用及示例

我们来深入学习 syslog 系统调用(注意:这里的 syslog 不是指用户空间的 syslog() 函数,而是指 Linux 内核提供的一个系统调用,用于从内核空间向用户空间的系统日志守护进程发送消息) 不过,通常当我们谈论在用户空间程序中记录日志时,我们指的是使用标准 C 库提供的 syslog(3) 函数。这个函数是用户空间 API,它在底层可能会使用 syslog 系统调用来与系统日志守护进程(如 rsyslogd 或 syslogd)通信。 让我们先明确一下: syslog 系统调用:这是内核使用的低级机制。 syslog(3) 用户空间函数:这是程序员在应用程序中记录日志

Read More

tee系统调用及示例tee

tee函数详解 1. 函数介绍 tee函数是Linux系统中一个非常实用的函数,它的作用就像现实中的”T型管道”一样。想象一下水管系统中的T型接头,水从主管道流入,同时流向两个不同的分支管道。在Linux编程中,tee函数就是这样一个”管道分流器”,它能够将一个管道中的数据同时复制到另一个管道中,而不需要将数据从内核空间复制到用户空间再复制回去。 使用场景: * 管道数据的复制和分流 * 避免不必要的数据拷贝,提高程序性能 * 实现数据的并行处理 * 日志记录系统中同时写入多个输出流 2. 函数原型 1 2

Read More

tgkill系统调用及示例

tgkill函数详解 1. 函数介绍 tgkill函数是Linux系统中一个精确的进程控制函数,它的名字来源于”Thread Group Kill”(线程组杀死)。在Linux中,每个进程实际上是一个线程组,主线程的ID就是进程ID。tgkill允许你精确地向指定进程组中的特定线程发送信号。 可以把tgkill想象成一个”精确制导导弹”,它不仅能指定攻击哪个”军队”(进程组),还能精确指定攻击该军队中的哪个”士兵”(特定线程)。相比之下,传统的kill函数更像是”地毯式轰炸”,可能会影响整个进程组。 使用场景: * 多线程程序中精确控制特定线程 * 线程调试和测试

Read More

timerfd_create, timerfd_gettime, timerfd_settime系统调用及示例

好的,我们来深入学习 timerfd 相关的系统调用 (timerfd_create, timerfd_gettime, timerfd_settime) 1. 函数介绍 在 Linux 系统编程中,处理定时事件是一个常见需求。传统的定时方法包括: alarm() 和 setitimer() + 信号 (SIGALRM):当定时器到期时,内核会发送一个信号给进程。这属于异步通知方式。信号处理函数有诸多限制(只能调用异步安全函数),并且容易引入竞态条件。 sleep() 系列函数:让进程休眠指定时间。这会阻塞进程,不够灵活。 timerfd 是 Linux 2.6.25 引入的一种基于文

Read More

times系统调用及示例

times 函数详解 1. 函数介绍 times 是POSIX标准函数,用于获取进程及其子进程的CPU时间统计信息。它返回自系统启动以来进程在用户态和内核态消耗的CPU时间,以及所有已终止子进程的CPU时间统计。这对于性能分析、资源监控和系统管理非常有用。 2. 函数原型 1 2 3 #include clock_t times(struct tms *buf); 3. 功能 times 函数获取当前进程的CPU时间使用情况,包括用户态CPU时间、系统态CPU时间,以及所有已终止子进程的相应时间。这些信息对于进程性能分析和资源管理至关重要。

Read More

tkill系统调用及示例

我们来深入学习 tkill 系统调用 1. 函数介绍 在 Linux 系统中,信号(Signal)是一种进程间通信(IPC)机制,允许一个进程(或内核)向另一个进程发送简短的异步通知。例如,当你在终端按下 Ctrl+C 时,系统会向当前前台进程发送 SIGINT 信号。 发送信号最常用的方法是 kill() 系统调用。kill(pid_t pid, int sig) 可以向指定的进程 ID (PID) 发送信号。 然而,在 Linux(特别是引入了线程之后),情况变得稍微复杂了一些。一个进程 (Process) 可以包含多个线程 (Threads)。这些线程共享同一个 PID,但每个线程

Read More

truncate 系统调用及示例

了解Linux中truncate系统调用的功能、语法及实用示例,帮助你高效管理文件大小,truncate系统调用用于将文件截断到指定长度。如果指定长度小于文件当前长度,则文件末尾被截断;如果指定长度大于文件当前长度,则文件被扩展,扩展部分填充为零。 truncate - 截断文件 函数介绍 truncate系统调用用于将文件截断到指定长度。如果指定长度小于文件当前长度,则文件末尾被截断;如果指定长度大于文件当前长度,则文件被扩展,扩展部分填充为零。 函数原型 1 2 3 4 5 #include #include int trunc

Read More

tuxcall系统调用及示例

tuxcall函数详解 1. 函数介绍 tuxcall函数是Linux内核中一个特殊的系统调用,主要用于TUX(Threaded linUX web server)Web服务器的内核级操作。TUX是一个实验性的高性能Web服务器,它将HTTP请求处理的某些部分直接在内核空间完成,以减少用户空间和内核空间之间的上下文切换开销。 可以把tuxcall想象成一个”内核级Web服务接口”,它允许用户空间程序与内核中的TUX Web服务器模块进行通信。通过tuxcall,应用程序可以执行一些原本需要在内核中处理的Web服务器操作,如缓存管理、连接处理等。 重要说明: tuxcall是一个非常特殊

Read More