当前位置: 首页 > 面试题库 >

在Bash中识别接收到的信号名称

张鸿志
2023-03-14
问题内容

收到信号后,我可以使用来执行一些命令trap。例:

trap 'echo hello world' 1 2

如果收到指定的任何信号,则显示“ hello world”。

但是如何打印/识别接收到的信号名称?


问题答案:

(如果您只有一个信号编号并想要一个名称,则kill -l $SIGNAL_NUM打印一个信号名称;您可以通过使用信号名称代替trap下面的调用中的数字来避免这种情况。)

码:

#!/bin/bash

trap_with_arg() {
    func="$1" ; shift
    for sig ; do
        trap "$func $sig" "$sig"
    done
}

func_trap() {
    echo "Trapped: $1"
}

trap_with_arg func_trap INT TERM EXIT

echo "Send signals to PID $$ and type [enter] when done."
read # Wait so the script doesn't exit.

如果运行该命令,则可以向该进程发送信号,并得到如下输出

Trapped: INT
Trapped: TERM
Trapped: EXIT


 类似资料:
  • 问题内容: 我有此命令可以执行我想要的操作,但无法在我的.bashrc中使用别名(请注意,它同时使用单引号和双引号): 我试过了: 还有一些其他没有运气的常识组合。.我知道bash带有引号是非常挑剔的。.因此,为它加上别名的正确方法是什么?为什么?谢谢 问题答案: 您只需要正确地转义即可。

  • 问题内容: 我想这样创建一个别名: 因此,如果有人输入: 它只会显示目录中的最后10个文件。 但似乎对我不起作用。有什么办法可以在bash中引入变量。 问题答案: 我会为此创建一个函数,而不是别名,然后将其导出,如下所示: 注意切换到:它告诉您您正在导出函数。把它放进去,你就很好了。

  • 本文向大家介绍Android BroadcastReceiver接收收到短信的广播,包括了Android BroadcastReceiver接收收到短信的广播的使用技巧和注意事项,需要的朋友参考一下 一、知识介绍   1、broadcastReceiver是广播接受者,四大组件之一。   2、Android中内置了很多系统级别的广播,可以在应用程序中得到各种系统的状态信息。   3、使用场景:  

  • 问题内容: 我尝试在我的应用中收到短信,并且确定问题出在我的AndroidManifest.xml文件中 我的SmsReceive.java就是这样 我确定我的问题出在manifest.xml中,因为 什么都不显示 我该怎么办 ? 编辑:正如我们的朋友所说的,我曾经用过 在我的函数中,但LogCat中什么也不会显示,所以我断然确定我的问题出在我的AndroidManifest.xml注意:我在HT

  • 我正在阅读关于if的bash示例,但有些示例是用单方括号编写的: 其他带双方括号: 有什么区别?

  • 现在,我正在开发一种功能,它配备了语音识别和无效记录功能。我将在识别过程发生时收集语音缓冲区数据。与RecognitionListener一样,应该在识别过程中触发onBufferReceived,但显然在识别过程中没有打印日志。在我的调试器模式中,它还显示了应该步进方法onBufferReceived的注意事项。我的目的是在识别过程中收集缓冲区数据,并将缓冲区保存到记录文件中。 主要活动 act