加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 显示或重定向shell的作业控制消息

发布时间:2020-12-14 02:11:38 所属栏目:Linux 来源:网络整理
导读:TL; DR 所有作业控制/崩溃消息在函数内发生时都会被隐藏.我将在下面详细介绍,但@Barmar指出可以通过在函数内部运行崩溃二进制文件来重现此问题,例如: crun() { /tmp/faulty $1 $2 $3} 我在我的.zshrc中定义了一个函数来编译和放大使用以下函数运行源代码:
TL; DR

所有作业控制/崩溃消息在函数内发生时都会被隐藏.我将在下面详细介绍,但@Barmar指出可以通过在函数内部运行崩溃二进制文件来重现此问题,例如:

crun() { 
  /tmp/faulty $1 $2 $3
}

我在我的.zshrc中定义了一个函数来编译和放大使用以下函数运行源代码:

crun() {
    local file=$1
    shift
    local exepath="$(mktemp)"

    if [[ $file =~ ".c$" ]]; then
        gcc -g -Wall $file -o $exepath || return $?
    else
        echo "no filetype detected"
        return 126
    fi

    $exepath "$@"
}

可以这种方式调用:

% crun source.cc arg_1 arg_2

这适用于普通程序,但是存在shell的作业控制消息(例如从段错误生成的消息)不会出现的问题.

举个例子:

% echo 'int main=0;' >> /tmp/faulty.c # a crashing c program
% crun faulty.c
% # no output generated

而等效的交互式命令会产生这样的:

% g++ faulty.c -o /tmp/faulty && /tmp/faulty
[1] 2894 segmentation fault (core dumped) #                        

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读