私は UNIX でパイプのコツをつかもうとしています。10 個の乱数を生成し、毎秒 1 個を画面に出力する単純なプログラムを作成しています。親プロセスは、パイプを介してそのような数値を生成して子に渡すプロセスであり、子は値を取得して表示を処理します。(タイミングの問題はさておき)私の問題はprintf()
、プログラムが想定どおりに機能する数値を出力する場合ですが、書き込もうとするとSTDOUT_FILENO
、厄介なシンボルがたくさん表示されることです...そして、その理由がわかりません.
if ( pid > 0 ) { //If I am the parent...
close( fd[0] );
srand( time ( NULL ) ); //throw the seed for random numbers...
for (i = 0; i < 10; i++)
{
sleep(1); //Waiting one second...
r = rand() % 100; //getting the number...
//As long as numbers are generated, put them on the pipe...
if ( ( write (fd[1], &r, sizeof(r) ) ) < 0 ) {
perror( "Error write()" );
exit( 1 );
}
}
}
else
{ //I am the child...
close (fd[1]);
//as long as there's something on the pipe, read it...
while ((read_bytes = read(fd[0], &buf, sizeof(buf))) > 0 ) {
//and shout it out on screen!
write(STDOUT_FILENO, &buf, read_bytes);
}
}