Funkcja system("...");

Funkcja system("...");
0D
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 11 lat
  • Postów:60
0

Witam,
Czy jest jakiś sposób, aby otrzymać to co zwróci na konsoli funkcja system i zapisać to sobie do tablicy znaków na przykład? Bo mam zrobić klient-serwer telnetu i chcę, że jak się w kliencie wpisze "dir C:" to serwer wykona system("dir C:\"); i rezultat (listę plików) odeśle do klienta.

edytowany 2x, ostatnio: Rev
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Pod linuxem masz popen http://linux.die.net/man/3/popen który robi dokładnie to co byś chciał. Nie wiem czy windows ma coś podobnego, pewnie ma.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
arasso12
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 5 lat
1

std::string CServer::exec_CMD(char* cmd)
{
FILE* pipe = _popen(cmd, "r");
if (!pipe) return "ERROR";

char buffer[128];
std::string result = "";
while(!feof(pipe)) 
{
    if(fgets(buffer, 127, pipe) != NULL)
	result += buffer;

}
_pclose(pipe);
return result;

}

Jakiś czas temu napisałem właśnie taki program :)


non omnis moriar i tyle :-)
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Też w zasadzie napisałem kiedyś coś podobnego, chociaż trochę bardziej rozbudowanego -> można łączyć klienta z dowolną ilością demonów (i oczywiście do każdego demona może być połączona dowolna ilość klientów) i wykonywać zdalne polecenia na wielu maszynach jednocześnie. I korzystałem w tym celu właśnie z popen()


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Shalom
A no widzisz ;) I jak, udało się?
arasso12
http://arascpp.wordpress.com/ Ostatnio dodany na bloga, wstawiam tam niektóre ciekawsze programy, niestety bez kodu bo jednak jakość nie była najlepsza...
0D
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 11 lat
  • Postów:60
0

Nie interesują mnie rozwiązania dla Linuxa, tylko dla Windows. Nadal proszę o pomoc.

adf88
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 12 lat
0
edytowany 3x, ostatnio: adf88
0D
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 11 lat
  • Postów:60
0

Dziękuję za odpowiedzi, szczególnie @arasso12 i @adf88 .

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 6 godzin
0

Tylko popen otwiera pipe'a, który jest jednostronny. Jak odtworzyć do obu na raz?


adf88
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 12 lat
0

Użyć CreateProcsess.

@_0x666_ ładnie opakował wszystko w streambuf:
uruchamianie procesu potomnego, używanie pipe

hauleth
Nie na *niksach. Tak tylko mnie to zawsze ciekawiło.
adf88
Na *niksach robi się to jakoś z użyciem pipe+fork+exec.
hauleth
Dzięki, już znalazłem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.