如何关闭Gnu进程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何关闭Gnu进程?相关的知识,希望对你有一定的参考价值。

我正在尝试使用Perl和用于Linux的Chart::Gnuplot模块创建一个脚本来表示一系列数据。它是这样的:

use strict;
use warnings;

use Chart::Gnuplot;

die "Linux check" if ( $^O ne 'linux' );

my $chart = Chart::Gnuplot->new(
    terminal => 'x11',
    title    => {
        text => "GRAPH",
        font => "Arial, 20"
    },
    xlabel => {
        text  => "X AXIS",
        font   => "arial, 20",
        offset =>"0,-1"
    },
    ylabel => {
        text   => "Y AXIS",
        font   => "arial, 20",
        offset =>"-6,0"
    },
);

my $dataSet = Chart::Gnuplot::DataSet->new(
    xdata => @x_data,
    ydata => @y_data,
    style => "points",
);

$chart->plot2d($dataSet);

exit;

当我从Eclipse运行它时,脚本工作正常并且图形显示正确,但该过程不会终止(关闭Gnuplot窗口将不起作用)。当我在终端上运行它时会发生类似的事情。

有问题的线是$chart->plot2d($dataSet)没有它可以正确终止。关闭窗户后我该怎么做才能结束它?

答案

Chart::Gnuplot运行gnuplot与相同的stdin和其他文件描述符打开。绘制图片后,gnuplot读取stdin等待更多命令。

一种解决方案是在绘制之前简单地将stdin重定向到perl程序中的/dev/null。这也会使图像立即显示和消失,因此您还应添加persist选项。以下是要更改的2行:

my $chart = Chart::Gnuplot->new(
    terminal => 'x11 persist',
...
open(STDIN, "<", "/dev/null") or die "Can't open /dev/null: $!";
$chart->plot2d($dataSet);

以上是关于如何关闭Gnu进程?的主要内容,如果未能解决你的问题,请参考以下文章

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程

我该如何做模态对话框片段(代码在我关闭之前不会执行)

如何看mysql版本

如何在片段中使用按钮[关闭]

Android:如何在选项卡内从一个片段导航到另一个片段? [关闭]

有人可以解释以下 R 代码片段吗? [关闭]