c - 为什么 zsh 隐藏 C 程序的错误输出?

标签 c zsh oh-my-zsh

我有一个用 C 编写的程序失败了。当我在 zsh 中运行它时,程序失败,但它的错误输出没有显示在命令行中(注意第二个➜是红色的,表示执行失败):

hpsc-hw2-USER on  master 
➜ ./sort -a 405500

hpsc-hw2-USER on  master 
➜ 

但是,当我在 bash 中运行它时,出现错误:

[USER@COMPUTER hpsc-hw2-USER]$ ./sort -a 405500
Segmentation fault (core dumped)

知道为什么吗?如果有帮助的话,我正在运行带有 spaceship 主题的 oh-my-zsh

最佳答案

but it's error output is not displayed in command line

这不是您的程序写入屏幕的内容。这是外壳在写它。所以 shell 并没有“隐藏”它。

我自己没有使用zsh,但由于红色箭头表示程序异常终止,我想您可以查看红色箭头的代码并创建自定义消息。以下是有关错误代码的问题,可能会对您有所帮助:What error code does a process that segfaults return?

我记得我曾经制作过一个自定义的 bash 提示符,显示最后的退出代码。也许我用过这个,但我不确定:Bash Prompt with Last Exit Code

这里是如何自定义 spaceship 主题提示的文档:https://denysdovhan.com/spaceship-prompt/docs/Options.html#exit-code-exit_code

我假设您需要将 exit_code 添加到 .zshrc 文件中的 SPACESHIP_PROMPT_ORDER 部分。

Any idea why?

您可能需要询问开发人员。一个同样有效的问题是:“为什么 bash 打印‘段错误’?”这只是一个设计选择。 Bash 不会打印发生段错误的内存地址。这是为什么?

似乎 oh-my-zsh 的开发者认为使用红色箭头就足够了。

关于c - 为什么 zsh 隐藏 C 程序的错误输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58160498/

相关文章:

terminal - 基于 2 个参数的 Zsh 自动完成功能

intellij-idea - 在 IntelliJ 中将新的 tmux session 与独立终端分开

macos - 伪终端不会分配,因为标准输入不是终端&困惑 : ttyname failed: Inappropriate ioctl for device

ruby - RVM + Zsh "RVM is not a function, selecting rubies with ' rvm 使用.. .' will not work"

c - 未能打印预期结果

c - 表达式 a = b != c; 的含义是什么?

printf 无法识别 C 指针

c - 使用 list_for_each 为 Linux 内核进程实现 DFS

git - 使 zsh 自动更正与自定义 git 别名一起工作

SSH login 显示 Only console users are allowed to run the X server