不一定分配错了。Linux的F_SETPIPE_SZ要求把管道容量调整到至少为请求值,内核可为实现便利采用更大的容量,函数返回实际设置的容量。因此,成功返回比请求大,可以符合这个下限式约定;它不是“多出了同样多的数据”,也不能凭返回值就说内存或管道已经损坏。

适用范围是实际Linux管道容量接口,相关操作自Linux 2.6.35提供。先确认返回值属于这次容量设置,而不是原任务输出字节数或另一个对象。普通文件、socket和其他系统的同名设置不能直接套用。本文没有调整正在使用的管道,也不把文档中当前实现的取整方式当作所有未来版本不变的承诺。
观察时由维护者把请求容量、调用结果与实际容量放在一起。官方说明,低于系统页大小的请求会向上取整,内核也可能按更方便的页面规模分配;普通进程还受相应上限约束。若返回错误,应核错误及权限,不把“至少”理解成任意数值一定能成功,也不通过提权或提高系统上限让数字吻合。
缩小容量还有独立条件。目标若小于当前为数据所用的缓冲空间,会返回EBUSY;这与硬盘文件被占用不是同一解释。F_GETPIPE_SZ取得的则是容量,不是此刻已有数据的长度。文档还提醒实际可写入字节数可能受写入大小与页面使用方式影响,不能用一个标称容量倒推出下一次必能写入多少。
风险在于为了消除等待反复扩大缓冲,掩盖下游未消费或原任务异常。下一步先保留原配置、请求和返回,只在有授权且可恢复的独立环境评估变更,不停止读端、不重复覆盖原输出。岳麓区台式电脑咨询可拨400-877-9605,说明上下游程序、原用途及容量字段,核实第三方是否支持电脑侧记录整理;电脑快修网提供信息展示与第三方维修对接,具体地址和安排当次确认。