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.
- Rejestracja:ponad 14 lat
- Ostatnio:około 11 lat
- Postów:60

- Rejestracja:ponad 21 lat
- Ostatnio:około 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
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.

- Rejestracja:prawie 15 lat
- Ostatnio:około 5 lat
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 :)

- Rejestracja:ponad 21 lat
- Ostatnio:około 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
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()
- Rejestracja:ponad 14 lat
- Ostatnio:około 11 lat
- Postów:60
Nie interesują mnie rozwiązania dla Linuxa, tylko dla Windows. Nadal proszę o pomoc.

- Rejestracja:ponad 21 lat
- Ostatnio:około 12 lat
- @arasso12 pokazał przykład z _popen
lub - CreateProcess (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682499.aspx)

- Rejestracja:ponad 21 lat
- Ostatnio:około 12 lat
Użyć CreateProcsess.
@_0x666_ ładnie opakował wszystko w streambuf
:
uruchamianie procesu potomnego, używanie pipe
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.
Shalom