Is there any way to ping a specific IP address with C?

后端 未结 4 1814
情歌与酒
情歌与酒 2020-12-06 05:35

Is there any way to ping a specific IP address with C? If I wanted to ping \"www.google.com\" with a certain number of pings, or for that matter, a local address, I would ne

4条回答
  •  清歌不尽
    2020-12-06 06:21

    There is no accepted answer yet and I stumbled upon this question while trying to do exactly what was asked here so I wanted to refer to Aif's answer here.
    The following code is based on his example and pings Google's public DNS in a child process and prints the output in the parent process.

    #include 
    #include 
    #include 
    
    #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;
    }
    

提交回复
热议问题