Helpful Information
 
 
Category: Operating Systems
xterm buffers program output?

Whenever I run a program through an xterm it seems to buffer all of the output (to stdout) until the program is finished. I thought this was just a PHP thing but I wrote similar scripts in C and Perl and they do the same.

Scripts:

PHP


for($i=0;$i<10;$i++)
{
echo "Hi...\n";
flush();
sleep(2);
}


Perl


for($i=0;$i<10;$i++)
{
print "Hi...\n";
sleep(2);
}


C


#include <stdio.h>

void main()
{
int i;

for(i=0;i<10;i++)
{
printf("Hi...\n");
sleep(2);
}
}


They all do the same thing... I get

Hi...Hi...Hi...Hi...Hi...Hi...Hi...Hi...Hi...Hi...

after 20 seconds.

Maybe I'm just stupid but I could swear I never had this problem when writing QBasic and C programs for DOS years ago...

I have also tried things like this:

./program.php | more
./program.php > output

But the output is still buffered until the end...










privacy (GDPR)