Przekazanie danych wyjścia jednego programu na wejście drugiego

0

Witam!

Problem polega na tym, że chcę przekazać wyjście z jednego programu na wejście drugiego za pomocą operatora "|" w konsoli.
Linux ładnie przekazuje dane z wyjścia na wejście i jest fajnie, ale problem pojawia się przy Windowsie, w którym po pewnym czasie
kończy się przekazywanie. O co może chodzić?

Przekazywanie następuje z programu pierwszego:

float v, t, dt = 0.1;
for( t = 0 ; ; t+=dt )
{
	v = cos( 2*M_PI*t );
	fwrite( &v, sizeof(float), 1, stdout );
	fflush(stdout);
	usleep( ( int )( dt*1000000) );
}

Do programu drugiego:

float f;
int len;
while( !feof( stdin ))
{
	len = fread( &f, sizeof( float ), 1, stdin );
	printf( "%f\n", f );
	fflush( stdin );
}
1

Problem między innymi polega na tym że znak Ctrl-Z ('\x1A') pod windows jest traktowany jako znak końca pliku tekstowego.
To samo dotyczy traktowania znaku '\r'.
Jeżeli chcesz kompatybilności to możesz używać strumienie wejścia/wyjścia tylko w "trybie tekstowym".

1 użytkowników online, w tym zalogowanych: 0, gości: 1