cs9*_*s95 2 unix bash dev-null
我/dev/null在bash编程中使用了很多东西将不必要的输出发送到黑洞.
例如,这个命令:
$ echo 'foo bar' > /dev/null
$
Run Code Online (Sandbox Code Playgroud)
echo什么都不会.我读过这/dev/null是一个空文件,用于通过重定向处理不需要的输出.但这种处置究竟是如何进行的?我无法想象/dev/null将内容写入文件然后立即删除该文件.那么当你重定向到这个文件时会发生什么?
>/dev/null将命令标准输出重定向到空设备,该设备是丢弃写入其中的信息的特殊设备.它都是通过file_operations实现的(drivers/char/mem.c如果你好奇的想看看自己):
static const struct file_operations null_fops = {
.llseek = null_lseek,
.read = read_null,
.write = write_null,
.splice_write = splice_write_null,
};
Run Code Online (Sandbox Code Playgroud)
write_null是写入/ dev/null时调用的.它总是返回与您写入的字节数相同的字节数:
static ssize_t write_null(struct file *file, const char __user *buf,
size_t count, loff_t *ppos)
{
return count;
}
Run Code Online (Sandbox Code Playgroud)
而已.缓冲区只是被忽略了.
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |