我想在xterm窗口中控制shell命令的执行。 这是一个示例代码(Ruby):
pid = Process.fork
if pid.nil?
exec "xterm -e 'while true; do echo -n .; sleep 1; done'"
else
puts "pid is: #{pid}"
Process.detach(pid)
end
然而,xterm窗口并没有被杀死:
$ ./tst2.rb
pid is: 26939
$ ps aux | grep xterm | grep -v grep
user 26939 0.0 0.0 4508 800 pts/3 S 13:11 0:00 sh -c xterm -e 'while true; do echo -n .; sleep 1; done'
user 26943 0.6 0.0 72568 6280 pts/3 S 13:11 0:00 xterm -e while true; do echo -n .; sleep 1; done
$ kill 26939
$ ps aux | grep xterm | grep -v grep
user 26943 0.1 0.0 72568 6280 pts/3 S 13:11 0:00 xterm -e while true; do echo -n .; sleep 1; done
如何杀死xterm窗口?
答案 0 :(得分:1)
您需要找到xterm进程的PID才能终止它。在您的情况下,最简单的方法是绕过sh
进程,因为您不需要它。为此,您必须将参数传递给数组中的exec
,而不是作为命令行:
exec('xterm', '-e', 'while true; do echo -n .; sleep 1; done')