使fgets在linux上发出更长的read()调用

Ano*_*nym 5 c linux stdio

我正在阅读相当大的行(最多128K)文本fgets.我在服务器上看到过多的上下文切换,使用strace我看到以下内容:

read(3, "9005 10218 00840023102015 201008"..., 4096) = 4096
Run Code Online (Sandbox Code Playgroud)

即一次fgets读取4096字节的块.有什么方法可以控制fgets调用时块的大小read()

Jer*_*fin 7

setvbuf 将是一个明显的起点.