linux 流量统计小程序
2015-07-02 16:59
603 查看
源码如下:
//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系统中md5sum命令的用法
- ./pdffigures/pdffigures: /usr/lib/x86_64-linux-gnu/libstdc++.so.6:version `GLIBCXX_3.4.20' not found
- linux下查看进程和端口
- ubuntu文件管理常用命令 分类: linux ubuntu 学习笔记 2015-07-02 16:57 29人阅读 评论(0) 收藏
- Linux下硬链接和软链接的区别
- Linux sssd 认证
- Linux sssd 认证
- 解决linux下mysql登录提示1045错误
- 在Linux的命令行中操作屏幕录制的方法
- Linux系统中设置保护眼睛的工作区背景色
- Linux下MySQL的操作
- Linux下mysql源码安装
- Linux IPC总结
- linux小操作-两个命令
- linux常用命令加实例大全
- 每天一个linux命令之ping命令
- Linux系统中Starting pptpd无法运行的解决办法
- linux常用命令
- Linux.CommanlineTool.grep
- CentOS 修改主机名