利用管道去获取cmd输出的信息:
int GerResurt(char* cmd, char* result);
int main()
{
while (1)
{
char cmd[50] = “netstat -nao”;
char result[4000] = { 0 };
scanf("%s", cmd);
GerResurt(cmd, result);
printf("%s", result);
}
system("pause");
}
int GerResurt(char* cmd, char* result)
{
char buffer[128];//缓冲区
FILE* pipe = _popen(cmd, "r");//创建一个管道
if (!pipe)return 1;//管道创建失败
while (!feof(pipe))//函数feof()在到达给出的文件流的文件尾时返回一个非零值
{
if (fgets(buffer, 128, pipe))//获取每行数据到buffer中
strcat(result, buffer);//函数将字符串str2 连接到str1的末端,并返回指针str1.
}
_pclose(pipe);//关闭管道
return 0;
}
获取到输出cmd之后对输出的内容进行一些处理就可以了。
输入的是什么啊?你能给我说详细点吗
@永远的码农: 输入你需要执行的cmd命令,比如netstat -nao,在Main函数里面的cmd变量就是输入你要执行的cmd命令,char cmd[50] = "netstat -nao";
利用GerResurt函数,把执行的netstat -nao命令的结果,通过result返回回来。
再通过result的一些处理,把你想要的端口取出来。
@码农小易: 我试了没有反应啊
@永远的码农:
可以的没问题。
你可以在if (fgets(buffer, 128, pipe))语句处设断点,然后调试看看。
buffer是可以接受到的。
再处理一下buffer,把你想要的端口号取出来。
define _CRT_SECURE_NO_WARNINGS
include <stdio.h>
include <stdlib.h>
include <string.h>
int GerResurt(char* cmd, char* result);
int main()
{
while (1)
{
char cmd[50] = { 0 };
char result[32767] = { 0 };
scanf("%s", cmd);
GerResurt(cmd, result);
printf("%s", result);
}
system("pause");
}
int GerResurt(char* cmd, char* result)
{
char buffer[128];//缓冲区
FILE* pipe = _popen(cmd, "r");//创建一个管道
if (!pipe)return 1;//管道创建失败
while (!feof(pipe))//函数feof()在到达给出的文件流的文件尾时返回一个非零值
{
if (fgets(buffer, 128, pipe))//获取每行数据到buffer中
strcat(result, buffer);//函数将字符串str2 连接到str1的末端,并返回指针str1.
}
_pclose(pipe);//关闭管道
return 0;
}