首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash SIGUSR1循环脚本

Bash SIGUSR1循环脚本
EN

Stack Overflow用户
提问于 2021-08-09 10:37:16
回答 2查看 504关注 0票数 0

3-4天前,我开始学习bash,我有一项任务要做,我很难完成这项任务。我需要创建一个脚本,运行一个循环,在发出信号后,它应该打印进程id并退出。如果我能得到帮助,我会非常感激的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-09 12:39:31

你会这样做的:

代码语言:javascript
复制
#!/usr/bin/env bash

# Our USR1 signal handler
usr1_trap(){
    printf 'Here is the PID: %d\nExiting right-now!\n' $$
    exit
}

# Register USR1 signal handler
trap usr1_trap USR1

printf 'Run this to stop me:\nkill -USR1 %d\n' $$

# Wait in background, not consuming CPU
while :; do
   sleep 9223372036854775807 & # int max (2^63 - 1)
   wait $!
done
票数 0
EN

Stack Overflow用户

发布于 2021-08-09 11:43:10

当接收到信号时,可以添加trap命令来执行命令:

代码语言:javascript
复制
trap 'echo "Hmm, SIGUSR1??!"' SIGUSR1

为了使代码更清晰,让我们使用一个函数来完成这个任务:

代码语言:javascript
复制
exit_program(){
    echo "Here is the PID: $$"
    exit
}

如何调用陷阱中的函数?

代码语言:javascript
复制
trap "exit_program" SIGUSR1

希望这将是有益的:

代码语言:javascript
复制
#!/usr/bin/env bash

# Cancel Program
exit_program(){
    echo "Here is the PID: $$"
    exit
}

# Reciever
trap "exit_program" SIGUSR1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68710657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档