Вам нужно создать раздвоенный процесс, используя fork
, как это, и используя popen
, чтобы прочитать входные данные из вывода команды ping google.com
и обработать его соответствующим образом. Есть интересное руководство от Beej по пониманию механизмов IPC, которое включено в пример кода ниже ...
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(void)
{
pid_t pid;
int rv;
FILE *ping;
char buf[2000];
switch(pid = fork()) {
case -1:
perror("fork"); /* something went wrong */
exit(1); /* parent exits */
case 0:
// We're the child
ping = popen("ping google.com", "r");
if (ping != NULL){
fgets(buf, sizeof(buf), ping);
pclose(ping);
rv = 0;
}else{
perror("popen failed");
rv = -1;
}
exit(rv);
default:
// We're the parent...
wait(&rv);
}
// Now process the buffer
return 0;
}
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.