1

CPANTk::ExecuteCommandモジュールのスニペットを使用して上記を達成しようとしましたが、セクション内で Perl プログラムを実行すると、以下のエラーが発生します$ec->configure(-command

また、Perl ジョブが完了すると、ウィンドウが予期せず閉じられます。スクリプトは機能し、エントリ内のコマンドの代わりにテキストを出力するだけでは閉じられません (コメントアウトした行のように)。2 つのことが必要だったので、この Cpan プログラムを使用することにしました。

  1. システム コマンドと実行結果をテキスト ウィジェット内に表示します。
  2. ユーザーが進行中のジョブをキャンセルできるように、ジョブの実行中に「実行ボタン」が「キャンセル」に変わるようにします。
    それを達成する方法を教えてください。

これが私が得るエラーメッセージです:

 > /usr/bin/perl: symbol lookup error: /usr/pkgs/perl/5.14.1/lib64/module/default/x86_64-linux/auto/Proc/ProcessTable/ProcessTable.so: undefined symbol: pthread_once

[13] 127 番出口 test1.pl

そして、ここに私が使用したコードがあります:

#!/usr/bin/perl

use Tk;
use Tk::ExecuteCommand;

$ec = tkinit()->ExecuteCommand(
     -command    => '',
     -entryWidth => 50,
     -height     => 10,
     -label      => '',
     -text       => 'Execute',
)->pack;
$ec->configure(-command => 'perl ./my_script.pl -wrapper wrapper_txt');
#$ec->configure(-command => 'Text line only');
$ec->execute_command;
$ec->update;

MainLoop;
4

1 に答える 1

2

$ec->configure(-command => 'perl ./my_script.pl -wrapper wrapper_txt');に変更$ec->configure(-command => 'perl my_script.pl -wrapper wrapper_txt');

ステータスを取得するには、以下のようなサブを使用します

sub sys {

    # Execute a command asynchronously and return its status and output.

    my $cmd = shift;

    $ec->configure( -command => $cmd );
    my $t = $ec->Subwidget( 'text' ); # ROText widget
    $t->delete( '1.0' => 'end' );
    $ec->execute_command;
    return ($ec->get_status)[0], split /\n/, $t->get( '1.0' => 'end -1 chars' );

} # end sys

ボタンを使用してそれを殺すには、ドキュメントを確認してください。

この ExecuteCommand メガ ウィジェットは、コマンド入力用の LabEntry ウィジェット、コマンド実行を開始する「Do It」ボタン、およびコマンド実行出力を収集する ROText ウィジェットで構成されています。コマンドの実行中は、[実行] ボタンが [キャンセル] ボタンに変わり、実行中のコマンドを途中で強制終了できます。kill_command メソッドは、プログラムで同じことを行います。

$exec->execute_command; $exec->get_status;したがって、とが必要です$exec->kill_command;

編集:既知の問題のように見えます。Proc::ProcessTable の最新バージョンを使用してみてください。

参照: Proc-ProcessTable のバグ #41397: Proc::ProcessTable - make テストが失敗する「undefined symbol: pthread_once」

于 2014-06-20T03:56:27.340 に答える