Mam takie prośbę :
w jaki sposób użyc getopt do zczytania argumentu liczbowego np typu int i późniejszego wykorzstywania go w programi np ./program -a 123. Nie bardzo wiem jak do tego podejsc może jest lepszy sposób chodzi dokładniej o to że chce napisac prosty serwer który może być uruchamiany np z opcją po której podajemy numer portu na którym ma słuchac ten serwer, ważne a było to z wykorzystanie biblioteki getopt
http://www.gnu.org/s/libc/manual/html_node/Example-of-Getopt.html
optarg jest typu char* zatem atoi() albo inne strtod()
a tak kontynując temat. .. udało mi sie w miare uporać z getopt() pobiera mi ip i numer portu ale chciałbym też żeby w przypadku nie podania ip interfejsu sieciowego, serwer domyslnie nasłuchiwał na wszystkich interfejsach, wie ktos moze jak to zrobić ?
Jeszcze jeden probem :
bufor[nr] = '\0';
printf( "Klient napisal: \n%s\n", bufor );
if(!strncmp("quit", bufor, 4))
{
write(nsock, "Zakonczono polaczenie\n",22);
close(nsock);
exit(1);
}
if(!strncmp("get", bufor, 3))
{
dup2(nsock, 1);
execl("/usr/bin/top", "/usr/bin/top", 0);
}
else
{
write(nsock, "Nieznane polecenie\n>",20);
}
}
Wszystko fajnie dziala do momentu
// if(!strncmp("get", bufor, 3))
porównuje tutaj czy klient wydal polecenie get, jesli tak to chcemy aby serwer odpowiedział wynikiem wykonania programu /usr/bin/top, niby wszystko dziala w porzadku tylko że program ten co chwile sie odswieża i w ten sposób na kliencie dostajemy mase chaotycznie ułożonych danych, ponieważ użylem execl nie wiem jak przerwac dzialanie top aby klient otrzymal tylko cos w rodzaju printscreena, a nie bieżąco wykonujący sie program. Bardzo proszę o pomoc mile widziane rownież rady jak innaczej poradzic sobie z takim zadaniem.
execl("/usr/bin/top", "/usr/bin/top", "-bn1", 0);
i zrób przed tym fork(), błagam.