Thread Ausgabe eines Programms *live* abfangen (11 answers)
Opened by xiconfjs at 2008-01-18 13:44

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]

View full thread Ausgabe eines Programms *live* abfangen