Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何终止在xterm中执行的命令_Ruby_Linux_Process_Xterm - Fatal编程技术网

Ruby 如何终止在xterm中执行的命令

Ruby 如何终止在xterm中执行的命令,ruby,linux,process,xterm,Ruby,Linux,Process,Xterm,我想在xterm窗口中控制shell命令的执行。 这是一个示例代码(Ruby): 但是,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 2

我想在xterm窗口中控制shell命令的执行。 这是一个示例代码(Ruby):

但是,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窗口?

您需要找到xterm进程的PID才能终止它。在您的情况下,最简单的方法是绕过
sh
过程,因为您不需要它。要执行此操作,必须在数组中将参数传递给
exec
,而不是作为命令行:

exec('xterm', '-e', 'while true; do echo -n .; sleep 1; done')
exec('xterm', '-e', 'while true; do echo -n .; sleep 1; done')