老爷康 发表于 2016-07-18 09:41

SIGKILL 和 SIGSTOP 信号不能被捕捉的问题?

环境:linux
现在有一个需求,我程序启动后,为了防止用户误输入ctrl+D/C 而把任务给挂掉,想忽略或者捕捉这个信号,当然,ctrl+c发送中断信号,可以被忽略,但是
类似于SIGKILL 和 SIGSTOP 信号不能被捕捉也不能被捕获我该怎么办,我想禁用掉他们,求解决

老爷康 发表于 2016-07-18 09:42

打字错误。不是D,是Z:lol:lol

cokeboL 发表于 2016-07-18 10:53

别逗,如果这俩都能捕捉了,恶意程序你就杀不掉了。

cokeboL 发表于 2016-07-18 10:55

程序员最大的错误之一就是,什么问题都想用技术解决,有时候是需求有问题,技术是解决不了的。

老爷康 发表于 2016-07-18 11:04

回复 4# cokeboL

那我说的简单点吧,现在要基于linux的原有shell 用python实现一个命令台,不想用户ctrl+Z 给退出,也就是用户只能看到我提供的命令台,看不到原有的shell怎么办
我们使用的bash,你按下ctrl+D 不是也不会退出吗,
   

cokeboL 发表于 2016-07-18 11:09

回复 5# 老爷康


程序员最大的错误之一就是,什么问题都想用技术解决,有时候是需求有问题,技术是解决不了的。

这句能看懂不。。

gaojl0728 发表于 2016-07-18 11:51

linux 内核设计就是这两个信号不能被捕获

nswcfd 发表于 2016-07-18 14:21

在bash里同样可以通过kill命令把自己杀掉的,只要python console不给用户提供执行kill的机会不就没事了?

“我们使用的bash,你按下ctrl+D 不是也不会退出吗,”
应该会退出吧?^D

老爷康 发表于 2016-07-18 14:39

自己解决一下自己的问题:
问题描述:要在python程序中防止用户退出经过多方查找和实践,发现是自己的问题   ^C ^Z ^\ 这三个都会导致退出,但是我们需要知道他们触发的信号
和那两个不可忽略的信号并没有关系,是我自己提出的问题 有毛病:dizzy: , 分别是 SIGTSTP SIGINT SIGQUIT 只需要调用python的signal库,对这三个
信号 屏蔽即可
import signal
signal.signal(signal.SIGINT,signal.SIG_IGN).其他两个类似,即可!!!

seanking1987 发表于 2016-07-18 15:54

大家都被带到信号9的坑里了。。
页: [1] 2
查看完整版本: SIGKILL 和 SIGSTOP 信号不能被捕捉的问题?