在 Linux 中写入 /dev/null 的优化程度如何?

How optimized are writes to /dev/null in Linux?

在 Linux 用户态程序中,如果我 open(2) /dev/null(或做一些等效的事情,比如将 stdout 重定向到 /dev/null),然后write(2) 对于生成的句柄,我的写入请求在被丢弃之前传播到内核的深度有多深?是否发生数据的内存复制?是否发生内核上下文切换?

如果我对 /dev/null 句柄使用 writev(2),内核是否足够智能以跳过遍历传递的 iovec?

由于 null 是一个字符设备,写入会传递一个指向数据的指针和一个大小。只写 returns 传入的计数,不会发生数据复制。参见:https://elixir.bootlin.com/linux/v5.18/source/drivers/char/mem.c#L453