$ 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;
}