用什么来模拟这些呢?

ETKH
用什么来模拟这些呢?

1) SIGHUP       2) SIGINT       3) SIGQUIT     5) SIGTRAP     9) SIGKILL     15) SIGTERM  


什么命令可以用来模拟这些信号量

yjh777
[quote]原帖由 [i]ETKH[/i] 于 2008-6-26 19:17 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8680532&ptid=1181441][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
1) SIGHUP       2) SIGINT       3) SIGQUIT     5) SIGTRAP     9) SIGKILL     15) SIGTERM  


什么命令可以用来模拟这些信号量 [/quote]

你说的模拟是啥意思?
kill 命令可以用来给其他进程发信号, man kill

waker
信号量和信号不是一码事,学习的时候别看差了

ETKH
[quote]原帖由 [i]yjh777[/i] 于 2008-6-26 19:48 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8680695&ptid=1181441][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]


你说的模拟是啥意思?
kill 命令可以用来给其他进程发信号, man kill [/quote]


  是这样的,我不知道 1) SIGHUP       2) SIGINT       3) SIGQUIT     5) SIGTRAP     9) SIGKILL     15) SIGTERM  这些都表示什么意思,想知道用什么命令来模拟这些

waker
man 7 signal

无声无息
模拟?
这里时说收到信号,然后用这个值来表示,你搞混了。

正如你先模拟ctrl+c,就用kill发信号一样

ETKH
[quote]原帖由 [i]waker[/i] 于 2008-6-26 20:11 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8680842&ptid=1181441][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
man 7 signal [/quote]

MAN了一把

SIGHUP        1       Term    Hangup detected on controlling terminal
                                     or death of controlling process
SIGINT         2       Term    Interrupt from keyboard
SIGQUIT       3       Core    Quit from keyboard


有2个小问题就
1  例如 SIGINT和SIGQUIT表示的都是从键盘上发出一些指令,但是不知道这个指令对应的到底是什么呢?是Ctrl + c还是什么,也就是说Ctrl +c表示的是什么 是2 还是3?

2 如果信号2代表的就是Ctrl +c,如果我在脚本中有这么一段  trap 'abort'  2,如果我在执行脚本的时候,执行Ctrl + c的话,这个脚本就中断啦

  能否这么理解?

无声无息
执行Ctrl + c,就执行abort()函数

ETKH
[quote]原帖由 [i]无声无息[/i] 于 2008-6-27 14:29 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8686241&ptid=1181441][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
执行Ctrl + c,就执行abort()函数 [/quote]

SIGINT         2       Term    Interrupt from keyboard
SIGQUIT       3       Core    Quit from keyboard


那这些又表示什么呢?

从字面意思上应该是从键盘上发出一个指令,但是是什么指令呢?  我是想测试一下这个  trap 'abort'  2

无声无息
#!/bin/sh

trap "mytest" 2
a=0
mytest() {
        echo "enter CTRL+C"
        exit 0
}

while :
do
        a=$(($a+1))
        sleep 1
        echo $a
done

无声无息
运行后,中断看看你就知道了

LoveForLinux
看看UNIX高级编程,用kill 可以向制定的进程发送制定的型号

ETKH
[quote]原帖由 [i]无声无息[/i] 于 2008-6-27 15:15 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8686721&ptid=1181441][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
运行后,中断看看你就知道了 [/quote]


  非常感谢你的指点,但是我要在键盘上怎么做才可以产生 2 的信号呢?

无声无息
回复 #13 ETKH 的帖子

CTRL+C

ETKH
[quote]原帖由 [i]无声无息[/i] 于 2008-6-27 16:37 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8687582&ptid=1181441][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
CTRL+C [/quote]


    谢谢老兄的帮助,我还有一点要向你请教一下,非常不好意思

  你能说一下 trap 'abort' 1  3 5 9 15这几个阿拉伯数字要怎么模拟才能实现?

  比如你说的2可以用 CTRL+C来实现,其他的怎么实现?

  我是找了N久都没有解决这个问题,谢谢

chzht001
[quote]原帖由 [i]ETKH[/i] 于 2008-6-27 16:59 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8687806&ptid=1181441][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]



    谢谢老兄的帮助,我还有一点要向你请教一下,非常不好意思

  你能说一下 trap 'abort' 1  3 5 9 15这几个阿拉伯数字要怎么模拟才能实现?

  比如你说的2可以用 CTRL+C来实现,其他的怎么实现? ... [/quote]

用kill发啊,kill -l 看看可以发哪些信号

ETKH
[quote]原帖由 [i]chzht001[/i] 于 2008-6-27 17:09 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8687919&ptid=1181441][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]


用kill发啊,kill -l 看看可以发哪些信号 [/quote]

$ kill -l
1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     

kill -2 test4.sh
-bash: kill: test4.sh: arguments must be process or job IDs
[db@ebs ~]$ kill -2
kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
[db@ebs ~]$ kill -s 2 test4.sh
-bash: kill: test4.sh: arguments must be process or job IDs
[db@ebs ~]$ kill -s 2
kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
[db@ebs ~]$ kill -s test4.sh
-bash: kill: test4.sh: invalid signal specification


   现在我在运行这个TEST4.SH这个脚本,怎么用2来杀掉?

waker
kill -2 TEST4.SH所用进程的pid

不会接着问怎么知道进程的pid吧[img]http://bbs.chinaunix.net/images/smilies/icon_mrgreen.gif[/img]

无声无息
1  S I G H U P 挂起或父进程被杀死
2  S I G I N T 来自键盘的中断信号,通常是< C T R L - C >
3  S I G Q U I T 从键盘退出< C T R L - D >
9  S I G K I L L 无条件终止
11  S I G S E G V 段(内存)冲突
1 5  S I G T E R M 软件终止(缺省杀进程信号)

无声无息
[quote]原帖由 [i]waker[/i] 于 2008-6-27 19:39 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8688842&ptid=1181441][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
kill -2 TEST4.SH所用进程的pid

不会接着问怎么知道进程的pid吧[img]http://bbs.chinaunix.net/images/smilies/icon_mrgreen.gif[/img] [/quote]

这样子只能去google搜索,但是什么是google了?o(∩_∩)o...哈哈