linux - 网络流量的软件中断

标签 linux events interrupt

<分区>

我的电脑上有 3G、Wifi 和 LAN 端口。我想构建一个 linux 软件,如果有网络流量则显示绿色,没有网络流量则显示红色。

TCPDUMP 可以提供实时统计数据,但会产生高 CPU 负载。因此我想知道我是否可以通过软件中断获得实时统计信息?只要有网络流量,就会产生软件中断。

提前致谢

最佳答案

我不知道你是否将此称为软件中断,但你可以引用以下示例。 (poll() 的第三个参数是以毫秒为单位的时间,在此之后网络被视为不活动。)

/* compile with -lpcap */
/* run as root         */

#include <stdio.h>
#include <sys/poll.h>
#include <pcap.h>

int main(int argc, char *argv[])
{
    int color = 0;
    struct pollfd ufd;
    struct pcap_pkthdr h;
    char errbuf[PCAP_ERRBUF_SIZE];
    pcap_t *p = pcap_open_live(NULL, 0, 0, 0, errbuf);
    if (!p) return puts(errbuf), 1;

    ufd.fd = pcap_fileno(p);
    ufd.events = POLLIN;
    for (; ; )
        switch (poll(&ufd, 1, 100))
        {
        case -1:    perror("poll"); return 1;
        case  0:    if  (color) color = 0, puts("red"); break;
        default:    if (!color) color = 1, puts("green");
                    pcap_next(p, &h);
        }
}

关于linux - 网络流量的软件中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16912410/

相关文章:

linux - 使用 Lauterbach T32 和 Linux/Qt 时 CPU 使用率较高

linux - 按-m查找文件不查找在日期内修改的文件

java - 如何使用java Thread.currentThread().interrupt()

c - 进行中断链接分配

events - 将groovy gorm代码放入配置文件错误?

sockets - 我应该如何关闭信号处理程序中的套接字?

linux alternatives command database(找个名字)

linux - Geany:如何查找和计数?

linux - 如何检测挂起、休眠等系统电源事件

javascript - 自己的 pubsub 实现与使用 addEventListener() + CustomEvent 相比?