我有一个用 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/