linux 流量统计小程序
源代码例如以下:
//2015/7/2 10:30:35
//gino
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#define FLOW_RX_FILE "/sys/class/net/eth0/statistics/rx_bytes"
#define FLOW_TX_FILE "/sys/class/net/eth0/statistics/tx_bytes"
#define FLOW_STATISTICS "/tmp/statistics"
#define DATA_BUF_SIZE 1024
int main(int argc, char **argv){
int flowRx_fd, flowTx_fd, flowSt_fd, data_size ;
char RX_buf[DATA_BUF_SIZE] , TX_buf[DATA_BUF_SIZE];
FILE *flowSt_pin = NULL;
if((flowRx_fd = open(FLOW_RX_FILE, O_RDONLY)) == -1){
fprintf(stderr, "RX_open: %s\n",strerror(errno));
exit(EXIT_FAILURE);
}
if((flowTx_fd = open(FLOW_TX_FILE, O_RDONLY)) == -1){
fprintf(stderr, "TX_open: %s\n",strerror(errno));
exit(EXIT_FAILURE);
}
if((flowSt_fd = open(FLOW_STATISTICS, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR)) == -1){
fprintf(stderr, "ST_open: %s\n",strerror(errno));
exit(EXIT_FAILURE);
}
//将文件描写叙述符转换成文件指针
flowSt_pin = fdopen(flowSt_fd, "w+");
while(1){
bzero(RX_buf,sizeof(RX_buf));
bzero(TX_buf,sizeof(TX_buf));
if((data_size = read(flowRx_fd,RX_buf,sizeof(RX_buf))) == -1){
fprintf(stderr, "read_rx: %s\n",strerror(errno));
}
RX_buf[data_size -1 ] = '\0';
if((data_size = read(flowTx_fd,TX_buf,sizeof(TX_buf))) == -1){
fprintf(stderr, "read_tx: %s\n",strerror(errno));
}
TX_buf[data_size -1 ] = '\0';
//JOSN格式 {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"}
fprintf(flowSt_pin,"{\"up_flow\":\"%s\",\"down_flow\":\"%s\"}\n",RX_buf, TX_buf);
fflush(flowSt_pin);
lseek(flowRx_fd, 0, SEEK_SET);
lseek(flowTx_fd, 0, SEEK_SET);
sleep(2);
//更改文件大小。保存向文件里写入的数据达到覆盖效果
ftruncate(flowSt_fd, 0);
}
return 0;
}
linux 流量统计小程序的更多相关文章
- Linux C语言小程序
Linux C语言小程序 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include & ...
- 采用pandas读取文件,进行自动化统计小程序
自己完成的第二个自动化统计小程序,完成之后感觉:命名不够规范,造成可读性比较没那么好,幸好给自己很多地方都加了注释#coding:utf-8import os,sysimport reimport x ...
- 【学习笔记】C#中HashTable和快速排序的用法,从单词频率统计小程序写起
先瞎扯点别的.进入这个神圣的地方总需要些鞭策,阿西巴,我是被鞭策进来摆摊的程序猿.软件工程老师说,写程序,发博客,就来博客园.这是个号召力很强的口号.最近看网络营销 搜索引擎优化的书多一些,只能说王老 ...
- python--代码统计小程序
有人说,大学生在校期间要码够10W行代码,也有人说,看的不是写代码的行数,而是修改代码的行数... 不管谁说,说的人都挺牛的 咳,首先给自己定个小目标吧,5W行代码!成天写代码,啥时候到5W呢?为了更 ...
- 词频统计小程序-WordCount.exe
一. 背景 最近顶哥为了完成学历提升学业中的小作业,做了一个词频统计的.exe小程序.因为当时做的时候网上的比较少,因此顶哥决定把自己拙略的作品发出来给需要的人提供一种思路,希望各位看官不要dis ...
- linux 流量统计
因为很多vps或者服务器都是限流量的,但是又很多服务商并没有提供详细的流量表,比如每天的流量表,所以肯定有人很想知道自己服务器到底跑了多少流量. vnstat就是一个很好用的服务器流量统计命令.我截几 ...
- Linux中的小程序—— 进度条
在说正事之前,首先科普一下在什么是回车什么是换行? 我们通常所说的回车就是从一行的末尾跳到另一行的开头,但事实上这却是由回车和换行两个动作所完成的,也就是键盘上<enter>所完成的工作. ...
- 对比学IT---路由器和linux流量统计的差别
1. 路由器使用MQC来统计端口入出方向,特定特征的数据流. 显示policy 的统计信息 配置policy: #traffic classifier vlan5traffic operator an ...
- 【linux】——一个小程序
利用工作之余为小伙伴写了份作业,关于进程间通信的.题目如下: 父进程从键盘上接受1000个数据,对其求和sum1,子进程对这1000个数平方和sum2,结果传给父进程,父进程将sum1+sum2后,打 ...
随机推荐
- 【Codeforces Round #476 (Div. 2) [Thanks, Telegram!] D】Single-use Stones
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 设长度为L的所有区间里面,石头的个数的最小值为k 设取到k的区间为l,r 那么k就为最多能通过的青蛙个数. 假设k再大一点.比如为k ...
- Java基础学习总结(57)——Jrebel插件热部署
JavaEE开发环境下,Tomcat对热布署的支持还是比较弱,致使开发过程中浪费大量时间在重启服务上.胖先生讨厌来来回回的折腾,所以想看看有没有实时的编译,发现Jrebel的插件付费软件,它对热布署的 ...
- libvips
libvips : an image processing library libvips is a 2D image processing library. Compared tosimilar l ...
- bzoj-1492 货币兑换Cash (1)——平衡树维护凸包
题意: 有n天和m的初始金钱,用来购买AB两种纪念券: n天里每天都有AB的价格.每天能够进行这种操作. 1.卖出手中x%的纪念券(AB分别都卖出x%). 2.用x的金钱买入纪念券.买入AB券的比例在 ...
- 随心所欲生成git仓库随意一段commit的专用patch应用小实践
随心所欲生成git仓库随意一段commit的专用patch应用小实践 我们在开发中.时不时的可能要去做一个patch给你的下线,或者你的合作者.在git管理中,我们知道有git format-pat ...
- lua简单类的实现
原文地址:http://blog.csdn.net/qqmcy/article/details/37725177 类实现: MyClass = class("MyClass") - ...
- class.forName的官方使用方法说明
原文地址:http://yanwushu.sinaapp.com/class_forname/ 使用jdbc方式链接数据库时会常常看到这句代码:Class.forName(String classNa ...
- mysql安装,数据库连接
安装教程http://jingyan.baidu.com/article/e3c78d64412ae83c4c85f5fd.html 首先打开MySQL官网,找到Downloads标签,点击进入.如果 ...
- bzoj2464: 中山市选[2009]小明的游戏(最短路)
2464: 中山市选[2009]小明的游戏 题目:传送门 题解: 最短路的裸题... 代码: #include<cstdio> #include<cstring> #inclu ...
- .net core @Html 自定义属性中包含特殊符号解决
最近自己在练手项目用到了VUE 绑定属性的时候发现 有: -符号 这样显然是不支持的.之前发现 v-on 这种-符号也是不支持的 但是可用 @v_on 替代.可是找遍了所有资料也没找到:转义符 当时 ...