Avatar billede mollevp Nybegynder
23. juli 2005 - 22:37 Der er 4 kommentarer og
1 løsning

Vende rundt på streams

Hej,
Jeg sidder lige og leger lidt med at vende rundt på streams, jeg med inspiration fra en andet spm her på eksperten (http://www.eksperten.dk/spm/633793) har lavet følgende lille program:

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;

int main()
{
    FILE *fp = freopen("redir.out", "w", stdout);
   
    printf("test af IO\n");
    cout << "test af IO\n";
 
    system("ls -l");
     
    printf("Test af IO");
   
    fclose(fp);

    return 0;
}

Nu vil jeg så gerne vende tilbage til normale forhold :) Altså hvor printf skriver til stdout..
Avatar billede arne_v Ekspert
23. juli 2005 - 22:41 #1
godt spørgsmål

prøv evt. at kalde freopen igen med file "CON:" (forudsat Windows)
Avatar billede mollevp Nybegynder
24. juli 2005 - 00:39 #2
Jeg bruger desværre linux.. synes ellers det er en ret smart måde at hive noget data ud - som man ellers ville have sværer ved at få fat i.. Jeg sidder og leger lidt med at hive nogle informationer ud af mit trådløse netkort.. så kan man lige kalde iwconfig skrive resultatet i en fil og vise det grafisk.. En meget hurtigere metode, en selv at skulle kode en masse..
Avatar billede arne_v Ekspert
24. juli 2005 - 10:12 #3
op Linux prøver du "/dev/tty"
Avatar billede mollevp Nybegynder
24. juli 2005 - 12:19 #4
Ahh, hvor nice.. Det ser ud til at virke fint - koden blev:

#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;
   
int main()
{
    FILE *fp;

    cout << "Tekst til terminal #1\n";
   
    if((fp = freopen("redir.out", "w", stdout)) == NULL)
    cout << "Redir stout -> redir.out failed\n";
 
    cout << "Tekst til file redir.out\n";

    // Output fra kommandoen ls gemmes ogsaa i redir.out
    system("ls -l");
   
    // Output sendes til terminalen igen, /dev/tty er terminalen
    // for den korende process.
    if((fp = freopen("/dev/tty","w", fp)) == NULL)
    cout << "Redir fp -> /dev/tty failed\n";
   
    cout << "Tekst til terminal #2\n";
   
    if(fclose(fp) == EOF)
    cout << "Fejl: Lukning af stream\n";

    return 0;
}
Avatar billede arne_v Ekspert
24. juli 2005 - 14:37 #5
så vil jeg smide et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester