由于比设原因,看了一些iftop的源代码,虽然基本都没有看懂。但是还是知道了一些东西的。
首先我们直接上主菜。关于iftop输出到屏幕的函数主要在其ui.c文件下。我们打开ui.c
其中有很多定义的函数,我们找到draw_line_total()函数,其中下面的mvaddstr是一个输出流,我以前应该有所提到。这个函数中的buf,就是存储输出的流量信息,其中y,x分别表示其在终端的坐标信息。如果想要获得流量信息最简单的方法,使用一个fprintf(fp,"%s\n",(buf));将其输入到一个fp文档中,这样我们就获取了流量信息。
给一段我自己改过的代码
void draw_line_total(float sent, float recv, int y, int x, option_linedisplay_t linedisplay, int bytes) {
char buf[10];
float n;
int a = (COLS - 8* HISTORY_DIVISIONS);
switch(linedisplay) {
case OPTION_LINEDISPLAY_TWO_LINE:
draw_line_total(sent, recv, y, x, OPTION_LINEDISPLAY_ONE_LINE_SENT, bytes);
break;
case OPTION_LINEDISPLAY_ONE_LINE_SENT:
n = sent;
break;
case OPTION_LINEDISPLAY_ONE_LINE_RECV:
n = recv;
break;
case OPTION