Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Jak pobrać wynik funkcji system(...)

Ostatnio zmodyfikowano 2011-06-28 17:20
Autor Wiadomość
a3780459
Temat założony przez niniejszego użytkownika
[C++] Jak pobrać wynik funkcji system(...)
» 2011-06-28 11:09:40
Jak w tytule. Jak pobrać do programu to co funkcja system(...) wyświetla na ekranie zamiast to przekazywać na wyjście? Jest to możliwe? Poszukuję rozwiązania zarówno dla Windowsa jak i Linuxa.

Z góry dzięki...
P-34830
michalp
» 2011-06-28 11:17:34
Np.: przekazać strumień wyjściowy do swojego programu.

// Chociaż to trochę ekstremalne rozwiązanie.
// btw. miałem na myśli coś w stylu
system( "foo.exe | bar.exe" );
P-34831
a3780459
Temat założony przez niniejszego użytkownika
» 2011-06-28 12:52:22
No tak, tylko jak??
P-34832
asembler
» 2011-06-28 13:12:20
Chcesz pobrać napis z konsoli ? - Do tego celu możesz utworzyć bufor ekranu konsoli (sposób dla Windows), ale czy ci się uda zależy od ciebie, dlatego pokombinuj.
P-34833
ison
» 2011-06-28 13:42:19
też kiedyś nad tym myślałem, przekierowanie outputu konsoli bezpośrednio do programu jest co najmniej bardzo trudne (o ile ktoś Ci nie da gotowca, którego sam nigdzie nie znalazłem), najprostszym sposobem jest przekierowanie wyjścia do pliku i pobranie z niego treści w programie
C/C++
system( "polecenie > plik.txt" );
std::ifstream in( "plik.txt" );
in >>...

//
tak w ogóle to zależy jeszcze z jakiego poziomu chcesz to zrobić, czy z poziomu programu (czyli wewnątrz programu chcesz pobrać to co wypisze jakieś polecenie) czy z poziomu konsoli (już przed odpaleniem jakiegoś programu znane jest polecenie, z którego chcesz pobrać wyjście)
zarówno na Linuksie jak na Windowsie możesz użyć
polecenie | program
w ten sposób wszystko co wypisze polecenie będzie przekierowane do programu
właśnie tak napisałem sobie kiedyś Windowsowego grepa ;) (http://pl.wikipedia.org/wiki/Grep)
P-34834
a3780459
Temat założony przez niniejszego użytkownika
» 2011-06-28 14:28:00
Rozwiązanie z wykorzystaniem pliku mi wystarczy. Wielkie dzięki za pomoc.

Zamykam...
P-34836
Elaine
» 2011-06-28 14:28:28
przekierowanie outputu konsoli bezpośrednio do programu jest co najmniej bardzo trudne
Nie przesadzaj, istnieją w pełni udokumentowane mechanizmy do tego, całość to, przynajmniej pod Windowsem, niecałe 40 linii kodu.
P-34837
yoogi
» 2011-06-28 17:20:39
Jest funkcja WinExec() która działa prawie tak samo jak system. Nie licząc tego że ostatni argument podaję się czy ma okienko się pokazać czy nie. A tu masz dokumentację:
[MSDN] WinExec
P-34844
« 1 »
  Strona 1 z 1