linux - 为什么这个 shell 管道会退出?

标签 linux bash unix pipe

我有一个 shell 管道,用于随机生成 10 个字符的密码:

cat /dev/urandom | base64 | head -c 10

我的问题是cat/dev/urandom | base64 是一个无限输出流,不会自行退出。但为什么附加 head -c 10 会使整个管道退出?我假设 catbase64head 是 3 个独立的进程,head 如何使 cat 进程退出?

最佳答案

head 在读取所需数量后关闭输入文件。当管道从一侧关闭时,另一侧会出现写入错误;这会导致 base64 关闭,进而导致 cat 关闭。

关于linux - 为什么这个 shell 管道会退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031344/

相关文章:

linux - 每 n 行拆分批量文本文件

linux - 我对以下示例的重定向操作持怀疑态度

javascript - 从 bash 脚本运行 javascript

bash - 如何从脚本向脚本发送信号 SIGINT?

c - 在迷你 shell 中使用管道系统调用

c# - 可以编译为 DLL 并可以在 Linux Web 服务器后端使用的现代语言?

javascript - 在 Node.js/Express.js 应用程序上查找内存泄漏

linux - Grep\+ 符号后的第一个(2 位数)数字

C 程序在尝试写入 stdout 后退出

c - Ctrl-D(Unix)和Ctrl-Z(Windows)的不同行为