Jak odebrać wynik funkcji z polecenia systemowego?
Ostatnio zmodyfikowano 2012-01-17 02:02
konri1990 Temat założony przez niniejszego użytkownika |
Jak odebrać wynik funkcji z polecenia systemowego? » 2012-01-14 20:19:15 Opiszę mniej więcej do czego mi jest to potrzebne. Otóż muszę zabezpieczyć tak program, aby użytkownik nie mógł utworzyć za dużo procesów. Dlatego też muszę przed uruchomieniem programu wywołać funkcje system("ps -e|wc -l) . I wszystko ok mam liczbę tych procesów wyświetlaną w konsoli ale jak wstawić to do zmiennej? Przypisanie odpada bo funkcja ta zwraca 0(powodzenie) albo -1(porażka). Próbowałem strumieniem >> ale też niestety nici. Ma ktoś może jakąś poradę? Jakiś inny sposób tez może być, być może trzeba użyć jakiejś innej funkcji. Dodam, że program piszę pod Linuxem w C. P.S Mój pierwszy post i temat. Chciałbym tutaj też podziękować za portal i forum , ponieważ naprawdę wiele rzeczy jest tutaj napisane świetnie i z głową;) |
|
DejaVu |
» 2012-01-14 23:25:49 yh... zacznijmy może od początku... jeżeli chcesz robić cokolwiek pożytecznego na jakimkolwiek system operacyjny to zapomnij o używaniu funkcji system - jest to zakazany owoc języka C i C++, który jest namiętnie używany przez pseudo programistów.
Pamiętaj:
1. Google Twoim przyjacielem.
2. Wszystkie problemy związane z programowaniem przy zastosowaniu standardowych bibliotek zostały co najmniej kilka razy rozwiązane w Internecie.
http://linux360.pl/forum/thread-994.html
http://linuxreviews.org/man/popen/index.html.pl |
|
konri1990 Temat założony przez niniejszego użytkownika |
» 2012-01-15 14:08:34 Dzięki bardzo za odpowiedź. Szukałem oczywiście w googlach ale widocznie nieskutecznie:P Nie zamknę jeszcze tematu bo mogę mieć, problem z realizacją, a jeśli się coś uda osiągnąć to wrzucę tutaj dla innych:) |
|
konri1990 Temat założony przez niniejszego użytkownika |
» 2012-01-17 01:07:13 Wrzucam zatem moja funkcję, działa dobrze jednak jutro muszę ten projekt zdać, więc jeśli ktoś dostrzega jakiś błąd lub coś co mogę poprawić/ulepszyć to słucham opinii:) int polecenie( char * war1 ) { FILE * pipein_fp; char readbuf[ 80 ]; int ilosc; if(( pipein_fp = popen( war1, "r" ) ) == NULL ) { perror( "popen" ); exit( - 10 ); } while( fgets( readbuf, 80, pipein_fp ) ) puts( readbuf ); if( pclose( pipein_fp ) ==- 1 ) { printf( "Blad przy zamykaniu potoku" ); exit( - 11 ); }; ilosc = strtol( readbuf, NULL, 10 ); return ilosc; }
P.S swoją drogą jaki znacznik muszę wpisać, żeby zaznaczyło mi, że to kod? Bo <code></code> nie działa :/ |
|
DejaVu |
» 2012-01-17 01:51:59 |
|
konri1990 Temat założony przez niniejszego użytkownika |
» 2012-01-17 02:02:16 Ok dzięki:) Swoją drogą wystarczyło dać w tryb edycji i już widać, sorka. Tak jak pisałem czekam do jutra na jakieś opinie i jutro zamykam temat:) |
|
« 1 » |