C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何发送Ctrl-C控制字符或终端挂机消息到子进程?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个运行在伪终端的子进程.父进程不以root身份运行,但子进程通过su或sudo运行.因此,不可能向子进程发送一个信号来强制它退出.我想强迫它退出这些手段之一:

>模拟Ctrl-C.
>模拟终端挂机.

我该如何做这些?我已经有一个主人fd,我已经尝试过这样的事情:

write(master,&termios.c_cc[VINTR],1)

但它没有做任何事情.

解决方法

在我看来,如果你真的有一个pty(除非你的意思是伪终端),那么你所要做的就是将Control-C发送到该FD.作为这一点的证据,我在Python中提交了以下代码(但是相当接近C所需的代码):
import pty,os,sys,time

pid,fd = pty.fork()
if pid == 0:
   os.execv('/bin/sh',['/bin/sh','-c','while true; do date; sleep 1; done'])
   sys.exit(0)
time.sleep(3)
os.write(fd,'^C')
print 'results:',os.read(fd,1024)

这在一个pty下划分一个进程,它运行无限循环打印
日期.然后父母等待3秒钟并发送控件C.

这导致以下输出

guin:/tmp$time python /tmp/foo
results: Fri Feb  5 08:28:09 MST 2010
Fri Feb  5 08:28:10 MST 2010
Fri Feb  5 08:28:11 MST 2010

python /tmp/foo  0.02s user 0.01s system 1% cpu 3.042 total
guin:/tmp$

运行时间只有3秒钟,打印日期3次,并退出.

大佬总结

以上是大佬教程为你收集整理的如何发送Ctrl-C控制字符或终端挂机消息到子进程?全部内容,希望文章能够帮你解决如何发送Ctrl-C控制字符或终端挂机消息到子进程?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: