linux命令行界面中ctrl+c取消命令执行9问9答
linux  /  管理员 发布于 3年前   3365
问题1:说说为啥按ctrl+c就停止了
答:
当在终端按下ctrl+c时,会产生一个中断信号(SIGINT),并且内核会发给前台进程组
问题2:那你说一下是什么中断,什么是前台进程组
答:
中断就是一种异步事件,前台进程组 就是关联了终端的进程
问题3:那它为啥关联了终端,为啥叫前台,不叫后台
答:
因为bash程序启动之后,会打开伪终端主设备,
ptmax,并且会虚拟出 具有输入输出功能的 0,1,2文件,
同时在进程的fd目录可以证明,
在bash下面启动的进程会继承它的相关属性,
同时子进程就连接了终端,
在终端按下ctrl+c时,就会产生中断信号发给它的进程组
问题4:你上面的回答如何用实战证明呢
答:
用strace命令,
strace常用来跟踪进程执行时的系统调用和所接收的信号。
在Linux世界,进程不能直接访问硬件设备,
当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,
必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。
strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
strace命令实例
strace -o output.txt -T -tt -e trace=all -p 28979
上面命令的解释:
跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,
以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。
问题5:那刚才说了ctrl+c程序就终止了,那它生产的中断信号是啥呢?
如何查看呢?
进程对中断信号都有啥行为呢?
答:
1.SIGINT信号。SIGINT(“程序中断”)是终止信号之一;
2.kill -l("l" 为字母),查看相应的信号;
3.执行系统默认动作,对大多数信号来说,系统默认动作是用来终止该进程。
问题6:中断信号的内核数据在哪里查看呢?
答:
中断号的查看可以使用下面的命令:
cat /proc/interrupts
问题7:如果是后台进程ctrl+c或是守护进程ctrl+c为什么不会影响到?
答:
因为前台进程 连接了
伪终端设备【具有输入输出的伪设备,可以从进程的fd目录下得到验证】
而守护进程它并没有输入输出【就是说它切断了0,1,2文件】
待续
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号