Schrift
[thread]11155[/thread]

Ausgabe eines Programms *live* abfangen (Seite 2)

Leser: 1


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
xiconfjs
 2008-01-18 18:03
#104910 #104910
User since
2006-01-21
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
murphy+2008-01-18 16:55:52--
Vielleicht musst Du ja auch in Deinem C Programm die Ausgabe an einigen Stellen flushen (fflush(stdout)), oder auf Zeilenpufferung einstellen (setvbuf(stdout, (char *)NULL, _IOLBF, 0)).

In der Regel ist die Standardausgabe zwar schon auf Zeilenpufferung konfiguriert, aber das ist je nach C-Runtime vielleicht anders wenn das Ausgabeziel kein Terminal ist.



genau das gleiche hab ich mir vor 3 min auch gedacht, ausprobiert, funktioniert und wollte gerade den Thread zu schliessen freigeben :)



Ich danke allen nochmals für ihre Mithilfe.


MfG XiCoN-FJS-


also hier die "Auflösung" (mit der Bedingung, dass man den Quelltext des Programmes ändern kann.)

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use warnings;
$| = 1;

open( my $fh,"./test |")
        or die "Error, cannot start command: $!";

while ( my $line = <$fh> )
{
        print $line;
}



[cpp]#include <stdio.h>
#include <stdlib.h>

int main()
{
printf ("test1\n");
fflush(stdout);
sleep(5);
printf("test2\n");
fflush(stdout);
sleep(10);
printf("test3\n");
fflush(stdout);
return 0;
}[/cpp]
betterworld
 2008-01-18 23:46
#104920 #104920
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
murphy+2008-01-18 16:55:52--
In der Regel ist die Standardausgabe zwar schon auf Zeilenpufferung konfiguriert


Wenn die Ausgabe auf ein Terminal geht, was aber hier wohl nicht der Fall ist, wenn ich das richtig verstehe, oder so.
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2008-01-18 13:44.