如何快速杀死子进程?

binb 2000-06-28 11:42:00
加精
我在UNIX下有如下一端代码
if (d_pid=fork())==0) {
for (;;) {
signal(SIGUSR1, play_music);
}
eixt();
}
kill(d_pid, SIGUSR1);
/* 主程序运行 */
kill(d_pid, quit_music); /*quit_music只一条语句exit(0) */
/* 主程序继续运行 */

为何kill(d_pid, quit_music)不能立即杀死d_pid(主程序继续运行时,
它还在运行),一但加上wait即处于停机状态?
...全文
558 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
binb 2000-07-07
  • 打赏
  • 举报
回复
怎么不能给分?
binb 2000-07-07
  • 打赏
  • 举报
回复
谢谢fjp
我采用“以毒攻毒”的办法解决了
szyifan 2000-07-07
  • 打赏
  • 举报
回复
fjp如此认真帮你,你却一点表示都没有,一点规矩都不懂
ad 2000-07-06
  • 打赏
  • 举报
回复
最快的方法是按下电源开关或拔掉电源线,保证能将子进程杀死!
binb 2000-07-03
  • 打赏
  • 举报
回复
如何让子进程完全推出后,主程序接着运行?
wait?
fjp 2000-07-01
  • 打赏
  • 举报
回复
另外,杀死进程后“主程序再调用该功能函数,却失效”是否也和没正常关闭硬件有关?
我原来在sco unix下做电话银行程序时发现过这样的情况:当语音卡的某一通道响应外部
电话输入而此时程序非正常终止,接着你打开这个通道就会失败,除非你重新初始化它。
fjp 2000-07-01
  • 打赏
  • 举报
回复
善后工作主要取决于你的程序。比如关闭打开文件的句柄,释放分配的内存,关闭硬件通道等等。然后可用exit退出。就象平时程序运行完后正常退出一样。
如果硬性杀死一个进程,这些工作是没法完成的。
退出程序当然可用exit系统调用了。是否用exit(0)取决于你,如果你想返回另外一个值
比如-100(调用exit(-100)当然也行,总之一切在你。
binb 2000-07-01
  • 打赏
  • 举报
回复
由于调用同一函数放音乐和提示音,所以不能关掉硬件(会挂机)
没想到今天还能得到您的回答,很高兴!
binb 2000-07-01
  • 打赏
  • 举报
回复
谢谢,我做的是201程序,要求是拨号后,放音乐,若不能接通停止音乐。
告诉用户“暂时不能接通”,
放音乐用的函数与提示音用的是同一个函数
现在的情况是,我杀掉放音乐进程后,马上调同一函数播提示音,结果失败,
从运行结果看,好象是音乐还没停,就播提示音,函数自然失败。
我想要在放音乐进程完全终止后,再播提示音,应该可以。
如何让主程序在音乐进程完全停止后,播提示音?
用wait(0)好象不行!
binb 2000-06-30
  • 打赏
  • 举报
回复
请问退出前善后工作主要是指那些?
主动退出是exit(0)?
因为我做的是计算机语音技术程序,子函数跟硬件(语音板)
打交道多,光看程序不大容易看懂
简而言之,我调用子进程是为了放音乐,主程序在条件满足
后要求停止音乐。
请不吝赐教!
fjp 2000-06-30
  • 打赏
  • 举报
回复
1。一般信号会终止系统调用。
2。最好不用SIGKILL杀进程,可以发kill(d_pid, SIGUSR1)等,子进程接到信号
后做一些退出前的善后工作,然后主动退出比较好些。
3。如是系统调用失败,可用perror函数打印错误信息帮助判错。
4。最好能提供部分代码以助判断。
binb 2000-06-29
  • 打赏
  • 举报
回复
谢谢你的指点,
我在主程序用kill(d_pid, SIGKILL)(后接wait(0))能够杀死子进程,但是
不知为何,子进程play_music调用了的一个功能函数,
主程序再调用该功能函数,却失效,该函数自身决无问题
如何安全地杀死子进程?
fjp 2000-06-29
  • 打赏
  • 举报
回复
1.kill(d_pid,quit_music)有错。从你的代码看,quit_music是一个函数,而
kill的原型为int kill(pid_t,int).可以加上signal.h,以便编译器进行
类型检查。
2.wait停机表明进程一直在等待子进程结束。因为你发的信号不对(从程序上看发的是quit_music的地址),子进程无法对你的信号作出反映而退出。
3.for(;;)语句似乎并无必要。

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧