3

キーが押されるまで無期限に実行されるプロセスがあります。bash を使用して、このプロセスにキーストロークを挿入してプロセスを終了させたいと考えています。この投稿に基づいて、linux - ある端末から別の端末にコマンドを書きます

echo -e "b" > /proc/[pid]/fd/0

(この場合の文字「b」は任意です)文字「b」は、無期限に実行されているプロセスのターミナルに表示されますが、実際に入力した場合のようにプログラムの終了をトリガーしませんウィンドウに「b」。

xdotools の推奨事項も確認しましたが、機能させることができず、これを実装するために GUI に依存することを避けようとしています。

私は Ubuntu 10.04 を実行していますが、bash の経験はあまりありません。

4

2 に答える 2

4

ここから:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>

int main(void)
    {
    int hTTY = open("/dev/tty1", O_WRONLY|O_NONBLOCK);
    ioctl(hTTY, TIOCSTI, "b");

    close(hTTY);
    return 0;
    }

この例では、ターミナルとキーストロークがハードコーディングされていますが、必要に応じて変更できます。

Perl でも似たようなことができます:

perl -e '$TIOCSTI = 0x5412; $tty = "/dev/pts/1"; $char = "b"; open($fh, ">", $tty); ioctl($fh, $TIOCSTI, $char)'

これらのいずれかを で実行する必要がありsudoます。

于 2012-06-26T00:09:22.490 に答える
0

スクリプトからプロセスを強制終了するのはどうですか

killall processname
于 2012-06-25T23:10:31.697 に答える