有没有办法用C ping特定的IP地址?如果我想用一定数量的ping ping"www.google.com",或者就此而言,使用本地地址,我需要一个程序来执行此操作.我如何从C ping?
小智 11
有没有公认的答案了,我偶然发现了这个问题,同时试图做的正是在这里问,所以我想指的AIF的答案在这里.
以下代码基于他的示例,并在子进程中ping Google的公共DNS,并在父进程中打印输出.
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#define BUFLEN 1024
int main(int argc, char **argv)
{
int pipe_arr[2];
char buf[BUFLEN];
//Create pipe - pipe_arr[0] is "reading end", pipe_arr[1] is "writing end"
pipe(pipe_arr);
if(fork() == 0) //child
{
dup2(pipe_arr[1], STDOUT_FILENO);
execl("/sbin/ping", "ping", "-c 1", "8.8.8.8", (char*)NULL);
}
else //parent
{
wait(NULL);
read(pipe_arr[0], buf, BUFLEN);
printf("%s\n", buf);
}
close(pipe_arr[0]);
close(pipe_arr[1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)