📄 mksignal
字号:
#!/bin/sh# generate rc's internal signal table from signal.hexec > sigmsgs.cecho '#include "sigmsgs.h"'echoecho 'Sigmsgs signals[] = {'sed ' s/\/\*[ ]*// s/[ ]*\*\/// s/([@*+!]) // s/[ ]*([a-zA-Z,->& ]*)[ ]*// s/^[ ]*\#[ ]*define/\#define/ s/[ ]*signal$//' $1 |awk ' BEGIN { # assign to nomesg["SIGNAME"] to suppress a long message nomesg["SIGINT"] = 1 nomesg["SIGPIPE"] = 1 # assign to mesg["SIGNAME"] to override a message mesg["SIGHUP"] = "hangup" mesg["SIGKILL"] = "killed" mesg["SIGQUIT"] = "quit" mesg["SIGTERM"] = "terminated" mesg["SIGURG"] = "urgent condition on i/o channel" mesg["SIGSTOP"] = "stop signal not from tty" mesg["SIGTSTP"] = "stopped" mesg["SIGCONT"] = "continue" mesg["SIGCHLD"] = "child stop or exit" mesg["SIGTTIN"] = "background tty read" mesg["SIGTTOU"] = "background tty write" # assign to ignore["SIGNAME"] to explicitly ignore a named signal ignore["SIGMAX"] = 1 } $1 == "#define" && $2 == "NSIG" && $3 ~ /^[0-9]+$/ { nsig = $3 } $1 == "#define" && $2 ~ /^SIG/ && $3 ~ /^[0-9]+$/ && sig[$3] == "" && ignore[$2] == 0 { sig[$3] = $2 if ($3 > max) max = $3 if (mesg[$2] == "" && nomesg[$2] == 0) { str = $4 for (i = 5; i <= NF; i++) str = str " " $i mesg[$2] = str } } END { if (nsig == 0) nsig = max + 1 printf " {!!, !!},\n" for (i = 1; i < nsig; i++) { if (sig[i] == "") printf " {!!, !!},\n" else printf " {!%s!, !%s!},\n", sig[i], mesg[sig[i]] } }' |tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ!' 'abcdefghijklmnopqrstuvwxyz"'echo '};'exec > sigmsgs.hecho 'typedef struct {'echo ' char *name, *msg;'echo '} Sigmsgs;'echo 'extern Sigmsgs signals[];'grep '^ ' sigmsgs.c | # the thing in quotes is ^<tab>awk ' { sum = sum + 1; } END { print "#define NUMOFSIGNALS", sum }'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -