$ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
代码实现
int get_tcp_socket_sum (){int socket_num=0;FILE *tcp;char tmp[1024]; //设置一个合适的长度,以存储每一行输出int value;char name[1024];tcp = popen("netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'", "r");if (tcp == NULL) {return 0;}while (fgets(tmp, sizeof(tmp) - 1, tcp)) {if (sscanf(tmp, "%s %u", name, &value) != 2){continue;}if (0 == strcmp(name, "ESTABLISHED")){socket_num = value;break;}}pclose(tcp);return socket_num;}
