La solution sale, c'est d'exécuter la commande externe "ping" comme tu le propose. popen() permet de faire ça et de lire la sortie standard de la commande, ou tu peux récupérer le temps (enfin, si tu es sous un unixoïde, je ne sais pas si popen sous windows).
La solution propre, c'est de faire le ping programatiquement, soit à la main en envoyant des packets ICMP comme un grand, soit en utilisant une lib qui sait faire ça (ne me demande pas, je n'en connais pas).