相关疑难解决方法(0)

bash 管道中的缓冲区如何在 linux 上工作?

想象一个简单的命令如下:

cmd1 | cmd2
Run Code Online (Sandbox Code Playgroud)

是否cmd2开始执行

  1. 一旦cmd1输出一些东西
  2. 还是只有cmd1完全完成并退出?

在第 1 种情况下,当cmd1输出速度比cmd2消耗速度快时,或者只是在第 2 种情况下,中间输出必须有一个缓冲区。

  1. 该缓冲区位于何处?它是在内存中还是在磁盘上?
  2. 是否可以配置缓冲区的位置和大小?
  3. 当缓冲区不够大时会发生什么?

linux bash pipe

3
推荐指数
1
解决办法
1941
查看次数

dup() 系统调用的解释

当涉及到复制文件描述符时,我能得到对 dup() 函数的真正简化的解释吗?我想使用管道,但我还必须让孩子从管道中读取(这是最简单的部分),但将数据写回父级。我应该使用另一个管道,还是可以使用相同的管道?

linux pipe dup

2
推荐指数
1
解决办法
1337
查看次数

'|'是什么 在文件/ proc/sys/kernel/core_pattern中是什么意思?

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P
Run Code Online (Sandbox Code Playgroud)

'|'是什么 文件意味着/proc/sys/kernel/core_pattern什么?

linux sysctl ubuntu-16.04

1
推荐指数
1
解决办法
467
查看次数

Bash:你怎么回应"嘿"和",你好吗?" 有两个独立的echo命令?

我是Bash的新手,我正在尝试学习如何使用|来首先执行两个命令 符号,其次是如何将两个命令连接到复合命令中.

在一行中写入两个命令时,管道符号| 用于将第一个命令的输出连接到第二个命令的输入.所以我不太明白它是如何加入"嘿"和",你好吗?".

    echo "hey" | echo ", how are you?" 
Run Code Online (Sandbox Code Playgroud)

编写复合命令时,命令应位于以分号分隔的左括号和右括号之间.在这种情况下

    { echo "Hey"; echo ", how are you" }
Run Code Online (Sandbox Code Playgroud)

,但它似乎没有按预期工作.

对于这两种情况,我可以在这里错过什么?

linux bash shell terminal ubuntu

0
推荐指数
1
解决办法
380
查看次数

如何通过管道命令传递变量?

如果我运行此程序,它将起作用。

dig +short myip.opendns.com @resolver1.opendns.com
Run Code Online (Sandbox Code Playgroud)

如果我这样做了,那是行不通的

ip=$(dig +short myip.opendns.com @resolver1.opendns.com) | echo "$ip"
Run Code Online (Sandbox Code Playgroud)

如何通过管道命令传递变量?

bash shell

-1
推荐指数
1
解决办法
61
查看次数

标签 统计

linux ×4

bash ×3

pipe ×2

shell ×2

dup ×1

sysctl ×1

terminal ×1

ubuntu ×1

ubuntu-16.04 ×1