小编Dun*_*eal的帖子

将 stdin 管道传输到函数时会抑制分段错误输出。为什么?

让我们定义一个函数来执行二进制文件:

function execute() { ./binary; }
Run Code Online (Sandbox Code Playgroud)

然后定义第二个函数将文本文件通过管道传输到第一个函数:

function test() { cat in.txt | execute; }
Run Code Online (Sandbox Code Playgroud)

如果因段错误而binary崩溃,test则从 CLI调用将导致139返回代码,但错误 - “分段错误” - 不会打印到终端。

如果我们定义直接test调用,则会打印“分段错误” binary

function test() { cat in.txt | ./binary; }
Run Code Online (Sandbox Code Playgroud)

如果我们定义在execute不通过管道输入标准输入的情况下调用它,它也会被打印出来:

function test() { execute; }
Run Code Online (Sandbox Code Playgroud)

最后,它也得到如果我们重定向打印in.txtexecute通过管道,而不是直接的:

function test() { execute <in.txt; }
Run Code Online (Sandbox Code Playgroud)

这是在 Bash 4.4 上测试的。这是为什么?

command-line bash

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

vipe 在 bash 进程替换上行为不当

我有以下简单命令:

$ echo <(vipe)
Run Code Online (Sandbox Code Playgroud)

我希望它打开一个 vim 缓冲区,我可以对其进行编辑,然后当我完成后,回显分配用于保存 vim 缓冲区内容的临时文件的名称。

相反,vim 缓冲区的行为非常奇怪,不响应某些按键,最终 vim 完全崩溃。

我的哪个假设是错误的?

bash vim io-redirection

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

标签 统计

bash ×2

command-line ×1

io-redirection ×1

vim ×1