użycie getopt

0

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

0

http://www.gnu.org/s/libc/manual/html_node/Example-of-Getopt.html

optarg jest typu char* zatem atoi() albo inne strtod()

0

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ć ?

0

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.

0

execl("/usr/bin/top", "/usr/bin/top", "-bn1", 0);
i zrób przed tym fork(), błagam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1