如何使用C语言来判断ping命令是否能ping通,求代码。 要c的不要c++或c#的。
3个回答
展开全部
代码在 MAC OS 下运行良好,在 Linux 下得话需要稍作修改
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
char host[256], cmd[256];
printf("please input dest_host:");
scanf("%s", host);
strncpy(cmd, "ping -c5 ", 9);
strncat(cmd, host, strlen(host));
strncat(cmd, " > ping.txt", 11);
pid_t pid = fork();
if(pid < 0)
{
printf("fork error\n");
exit(-1);
}
if(pid==0)
{
if(execlp("/bin/sh", "sh", "-c", cmd, (char *)0) < 0)
printf("execlp error\n");
exit(0);
}
if(waitpid(pid, NULL, 0) < 0)
printf("waitpid error\n");
int fd = open("ping.txt", O_RDWR);
int n;
char buf[1024];
n = read(fd, buf, sizeof(buf));
if(n <= 0)
{
printf("read error\n");
exit(-1);
}
if(strstr(buf, "100.0%") == NULL)
printf("can reach %s", host);
else
printf("can't reach %s", host);
close(fd);
return 0;
}
如果你想要 ping 程序,刚好我最近写了一个,要的话私信
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询