当前位置:  技术问答>linux和unix

信号处理问题

    来源: 互联网  发布时间:2016-07-07

    本文导语:  /* 功能只是设置个定时器,用来杀死脚本的子进程,但不知为何却杀掉了脚本进程。。。 调试信息如下: + echo 'in main start $!:' in main start $!: + trap AlarmHandler 14 + SetTimer + DEF_TIME=10 + '[' 10 -ne 0 ']' + echo 'in settimer1 ...




/*
功能只是设置个定时器,用来杀死脚本的子进程,但不知为何却杀掉了脚本进程。。。
调试信息如下:
+ echo 'in main start $!:'
in main start $!:
+ trap AlarmHandler 14
+ SetTimer
+ DEF_TIME=10
+ '[' 10 -ne 0 ']'
+ echo 'in settimer1 $$:3725  $!:'
in settimer1 $$:3725  $!:
+ sleep 10
+ CHPROCIDS=' 3726'
+ TIMERPROC=3726
+ echo 'in settimer2 $$:3725  $!:3726'
in settimer2 $$:3725  $!:3726
+ CHPROCIDS=' 3726 3726'
+ echo 'in main end $!:3726'
in main end $!:3726
+ wait 3726
+ kill -s 14 3725 #不知道是不是这里杀掉了脚本进程,但是我对sigalarm信号设置了自己的处理器,就不应该会杀掉脚本进程
++ AlarmHandler
++ echo 'Got SIGALARMn$$:3725  $!:3726 '
Got SIGALARMn$$:3725  $!:3726 
++ KillSubProcs
++ echo 'in killsubprocs CHPROCIDS:  3726 3726   $!:3726'
in killsubprocs CHPROCIDS:  3726 3726   $!:3726
++ kill 3726 3726
alarm_signal.bsh: line 12: kill: (3726) - 没有那个进程
alarm_signal.bsh: line 12: kill: (3726) - 没有那个进程
++ '[' 1 -eq 0 ']'
++ exit 14

*/
#! /bin/bash

AlarmHandler(){
echo "Got SIGALARMn$$:$$  $!:$! "
KillSubProcs
exit 14
}

KillSubProcs(){

echo "in killsubprocs CHPROCIDS: $CHPROCIDS   $!:$!"
kill ${CHPROCIDS:-$!}
if [ $? -eq 0 ];then
echo "Sub-Processes killed."
fi

}
SetTimer(){
DEF_TIME=${1:-10}
if [ $DEF_TIME -ne 0 ];then
echo "in settimer1 $$:$$  $!:$!"
sleep $DEF_TIME && kill -s 14 $$ &
CHPROCIDS="$CHPROCIDS $!"
TIMERPROC=$!
echo "in settimer2 $$:$$  $!:$!"
fi
}


UnsetTimer(){
echo "UnsetTimer :$TIMERPROC"
kill $TIMERPROC
}


#main

echo "in main start $!:$!"
trap AlarmHandler 14

SetTimer 

#$PROG &
CHPROCIDS="$CHPROCIDS $!"
echo "in main end $!:$!"
wait $!

UnsetTimer
echo "All Done."

#exit 0


|
纯接分

|


me, too...
谢谢楼主!

|
那就接分吧

|
末班车。呵呵

|
谢谢 LZ

    
 
 

您可能感兴趣的文章:

  • 进入信号处理函数,是不是会自动把进入信号加入信号屏蔽字?还有sigpending
  • 信号处理函数里面用CRT函数可能导致"信号触发-处理"死循环吗?
  • 在执行信号处理程序来一个信号会怎么样?
  • 请高手指教 linux 信号处理问题
  • 关于linux内核中信号处理的问题?(信号处理的时间)
  • linux的信号处理函数中如何访问共享资源
  • 一个关于信号处理的问题
  • 信号处理中的SIGBUS
  • *** 求助!!! 关于(可靠)信号处理的问题 ***
  • 地震信号处理工具包 Seismic ToolKit
  • Linux,aix,windows下可以查询非本进程的信号处理函数吗?
  • 一段关于信号处理的代码看不懂?
  • 请教:多线程模式下的信号处理问题
  • 命名管道是不是一定要配合信号处理
  • linux信号处理程序
  • posix信号处理的一个问题
  • linux 信号及信号处理
  • linux编程中简单的信号处理问题,请教各位,谢谢。
  • 进程处理信号都不陌生,但线程处理信号……,进者有分
  • C++信号处理库 SP++
  • 为何信号处理没有及时被处理呢?
  • 关于系统信号处理函数signal()的疑问.
  • c++中怎么写sigaction()中的信号处理函数
  • 一个幼稚的信号处理问题
  • 对信号处理函数的迷惑!
  • 数字信号处理算法 Feldspar
  • linux下类的成员函数不可以作为自定义的信号处理函数么?
  • linux 下多线程 每个线程能否使用alarm来处理,信号是否会乱呢?
  • 为什么作了信号处理之后select函数就不能正常工作了?
  • 数学、信号处理、通讯类C++库 IT++
  • linux信号处理问题SIGPIPE
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于Linux下信号处理的一个问题,请大家帮忙看看!
  • 小白请教关于Listen、accept、信号处理函数、waitpid的几个问题
  • [请教内核高手]内核在何处处理接收到的信号
  • 信号处理函数的问题
  • 信号量处理问题
  • Linux对信号的处理
  • 关于用采用单独的线程对信号进行处理的问题
  • 信号处理中sleep函数失效的问题
  • linux 信号捕捉和处理的问题~~~在线等


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3