3

ストリームで使用されるバッファ サイズを取得する移植可能な方法はありますか?

glibcオンラインで投稿を検索すると、次の方法があることがわかりました。

size_t __fbufsize (FILE *stream)

ただし、これは glibc を使用している場合にのみ機能します。

別のオプションは、マクロBUFSIZとフラグ_IONBFとを使用すること_IOLBFです:

void print_buffering(FILE * fp)
{
    if (fp->_flags & _IONBF)
    {
        printf("No buffering\n");
    }
    else if (fp->_flags & _IOLBF)
    {
        printf("Line buffering - buffer size: %d\n", BUFSIZ);
    }
    else
    {
        printf("Full buffering - buffer size: %d\n", BUFSIZ);
    }
}

に依存するBUFSIZことは、バッファサイズが常に一定であることを示唆しています。これは常に当てはまりますか?

4

2 に答える 2

2

これを移植可能にしようとする gnulib の fbufmode() を見てください。

于 2015-06-24T02:12:25.403 に答える