//Clientul ii transmite serverului un nume de host,iar //serverul verifica daca hostul respectiv este accesibil sau nu, //transmitand clientului un mesaj corespunzator. #include #include #include #include #include #include main() { char comando [20],name[20]; FILE *fin; int pfd[2]; char ch; printf("Geben Sie den Namen des Host: "); scanf("%s",name); pipe(pfd); switch(fork()){ case 0: //Kind - Server { close(pfd[0]); sprintf(comando,"./ping.sh %s",name); // printf("cmd:%s\n",comando); if((fin=popen(comando,"r"))<0){ perror("Fehler bei popen"); }; while((ch=fgetc(fin))!=EOF){//hier wird charakterweise gelesen, man // kann aber z. B. auch fgets benuetzen um // mehrere Zeichen auf einmal herauszulesen. write(pfd[1],&ch,sizeof(char)); } pclose(fin); close(pfd[1]); exit(0); } default:{//Vater - Client close(pfd[1]); while(read(pfd[0],&ch,sizeof(char))){ printf("%c",ch); } printf("\n"); wait(NULL); } } }