signals

SIGPIPE および bash パイプが失敗します。
signals

SIGPIPE および bash パイプが失敗します。

LinuxでSIGPIPEをよりよく理解しようとしています。 私はこの実験を実行しました:{ ls -al /tmp/ ; echo "$?" 1>&2 ; } | head それは141終了プロセスに提供される終了コードであることを理解することを反映していますSIGPIPE 。以前は何度もやっていましたが、ニュアンスを理解しておらず、通常はSIGPIPE実行します。set -eEuo pipefailだから理解しようとしています。パイプが破損し、私のコードが常に失敗しないのはなぜですか?だから別の実験を実行しました。( set -o pip...

Admin

SIGTSTP(Ctrl-Z)は、スクリプトコマンドで開始されたスクリプトでは機能しません。
signals

SIGTSTP(Ctrl-Z)は、スクリプトコマンドで開始されたスクリプトでは機能しません。

注:stdinとstdoutをファイルに書き込むコマンドをscript示します。script scriptこのユーティリティを使用して、端末のテキストの色を維持しながら後で確認できるように出力を保存するスクリプトを実行しようとしています。 CtrlZ+()を使用して現在のスクリプトを一時停止しようとすると、SIGTSTPコンソールが印刷され、^Zスクリプトは停止しません。 Ctrlそれから+を試しました。S ( SIGSTOP)。現在実行中のスクリプトは停止しますが(htopすべてのプロセスをZモーダルとして表示)、端末を解放するわけではありません。&nb...

Admin

siglongjmpが複数の信号ハンドラで動作する方法
signals

siglongjmpが複数の信号ハンドラで動作する方法

私はフォローしていますAPUE教科書siglongjump()、これコードフラグメントこれは私を混乱させる。 pr_mask()ブロックされた信号を印刷する機能です。 これにより、USR1信号が来るとプロセスマスクに追加され、これがハンドラです。 static void sig_usr1(int signo) { time_t starttime; if (canjump == 0) return; /* unexpected signal, ignore */ pr_mask("starting si...

Admin

プロセスがSIGTERMを受け取ると、子プロセスはどうなりますか?
signals

プロセスがSIGTERMを受け取ると、子プロセスはどうなりますか?

プロセスがSIGTERMを受け取り、サブプロセス(たとえば/ bin / shコマンドを実行するJVM)を生成するときに何が起こるかを知りたいです。 どのような自動化がありますか、または親プロセスが終了し、子プロセスもSIGTERM信号を受信しますか?終了しますか? ...

Admin

子プロセスがクラッシュしたことを親プロセスに通知するために(親プロセス?)にシグナルを送信する方法
signals

子プロセスがクラッシュしたことを親プロセスに通知するために(親プロセス?)にシグナルを送信する方法

これが最善の方法ではないかもしれませんが、試してみています。次のように、dockerで使用するEntrypoint.shファイルがあります。 ENTRYPOINT ["./entrypoint.sh"] これはEntrypoint.shです。 #!/usr/bin/env bash args="$@" echo "docker container arguments: '$args'" "${args}" || { echo "Application exited with a non-zero code: '$?'"; exit 1...

Admin

プロセスが中断される原因は何ですか?
signals

プロセスが中断される原因は何ですか?

シェルセッションから抜粋した内容は次のとおりです。 brandon@Air ~ % brew upgrade rust ... ==> Pouring rust--1.75.0.arm64_monterey.bottle.tar.gz [1] + 76816 suspended (signal) brew upgrade rust brandon@Air ~ % fg [1] + 76816 continued brew upgrade rust [1] + 76816 suspended (signal) brew upgrade ru...

Admin

Bashによって開始された子プロセスを簡単に終了することはできません。
signals

Bashによって開始された子プロセスを簡単に終了することはできません。

通常、子プロセスは悪夢だと思います。次の場合: #!/usr/bin/env bash ( proc_one ) & ( proc_two ) & wait このスクリプトを Ctrl-C キーを押してもバックグラウンドで実行され続け、端末に入力した内容はすべて中断されます。結局ターミナルを閉じました。 端末を介してサブプロセスを簡単に終了できるモードはありますか? ...

Admin

未処理の信号のコード番号とはどういう意味ですか?
signals

未処理の信号のコード番号とはどういう意味ですか?

私はFPGAのカスタムデザインで動作するRISC-V Ariane CVA6プロセッサでカスタムGNU / Linuxディストリビューションを実行しています。 メモリマップされたI / Oレジスタからデータを読み取ろうとすると、バスエラーが発生します。マッピングとアドレスが正しいことを確認しました。 実行すると、dmesg未処理の信号7コード0x2エラーが表示されます。未処理の信号番号を確認しました。ここしかし、コード0x2への参照が見つかりません。どんなアイデアがありますか? ...

Admin

Perlの`kill`は予想外の`$! == Errno::EINTR` を使用します。
signals

Perlの`kill`は予想外の`$! == Errno::EINTR` を使用します。

TCP接続を処理するためにサブプロセスをフォークするネットワークデーモンを作成しました。SIGINT基本プロセスの各サブプロセスに対して1つずつトリガーして、いくつかのkill最終統計をクリーンアップして収集します。 ほとんどすべてのケースでうまく機能し、サブプロセスは非常に迅速に終了します。ただし、場合によっては、サブプロセスが短いタイムアウト(たとえば5秒)以内にシャットダウンを拒否することがあります。 当時何が起こったのかわからないので、状況を診断するために詳細な出力を追加しました。netcat接続を開いてプロセスを一時停止することがわかりましたnet...

Admin

睡眠のさまざまな行動を説明し、邪魔されたときに待つ方法
signals

睡眠のさまざまな行動を説明し、邪魔されたときに待つ方法

私はsleep間の微妙さを理解しようとしていますsleep & wait。 スクリプトを実行するとtest.sh #!/bin/bash sleep 10000 ある端末とps -aef --forest別の端末から見ると myuser 14355 14113 0 23:26 pts/5 00:00:00 | \_ /bin/bash ./test.sh myuser 14356 14355 0 23:26 pts/5 00:00:00 | \_ sleep 1...

Admin

ctrl + cを正しく処理するために私のシェルを取得しようとしています。
signals

ctrl + cを正しく処理するために私のシェルを取得しようとしています。

Ctrl Cを押したときに実行中のプログラムがSIGINTを受け取るようにシェルを設定する方法を理解しようとしていますが、bashを実行して内部で別のプログラムを実行してからCtrl + Cを押すと、シェルはSIGINTを受け取りません。実行中のプログラムは停止しますが、bashは停止しません。 これは、他のシェルでbashを起動するときにも当てはまります。 私は任意のキーを押すとサブルーチンを実行する独自の特別なシェルプログラムを作成しました。 #! /usr/bin/env bash set -e while true do echo pre...

Admin

SSH を介して実行されると、バックグラウンド・プロセスは SIGINT によって終了されません。
signals

SSH を介して実行されると、バックグラウンド・プロセスは SIGINT によって終了されません。

ssh、nohup、bgなどを試しています。以下を使用してリモートでテールプロセスを開始しました。 $ ssh remotehost '{ nohup tail -f ut.log &> /dev/null < /dev/null &} && echo $!' 期待どおり、バックグラウンドテールプロセスを正常に開始し、pidを印刷して終了します。次に、リモートシステムにログインしてpidを確認します。 $ ps -o pid,tid,ppid,pgid,sid,class,nice,rtprio,pri,sche...

Admin

EINTRを引き起こす信号はどこから来ますか?
signals

EINTRを引き起こす信号はどこから来ますか?

私はこれがいわゆるEINTR割り込み可能なシステムコールによって返される可能性があるエラーであることを知っています。私の質問は、EINTRを引き起こす信号がどこから来るのかということです。 Pythonで作業するときは、この問題に直面しますfnctl。ctrl+などの割り込みコマンドを実行していませんc。 ...

Admin

長すぎる。
signals

長すぎる。

私は350MBのRAMと2GBのスワップスペースを備えた仮想マシンでVagrantを介してFreeBSD 12を実行しています。 私が実行した場合: perl -e '$a="x"x200_000_000;sleep 1000' & sleep 10 perl -e '$a="x"x200_000_000;sleep 1000' & sleep 10 perl -e '$a="x"x200_000_000;sleep 1000' & sleep 10 perl -e '$a="x"x200_000_000;sleep 1000' &a...

Admin

Ctrl-Zを受信した後もプロセスは停止しません。
signals

Ctrl-Zを受信した後もプロセスは停止しません。

信号ハンドラについて学んでいます。私は受信したすべての信号を処理して印刷するための単純なPythonスクリプトを書いています。その後、リモートシステムでスクリプトを実行しますssh。その後、Ctrl C信号を送信すると、リモートプロセスが期待どおりに中断されます。代わりに、Ctrl Z シグナルを送信すると、リモート プロセスは期待どおりに停止しません。 まず、Ctrl Zがリモートスクリプトに到達できない可能性があると思いました。ただし、カスタムハンドラを接続すると、Ctrl Zが送信されることを検出します。 その後、Ctrl Zがプロセスで無視された可能...

Admin