問題タブ [bash-trap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bash - SIGINT で BASH ブレーク readline
ソケットの読み取りループ内で SIGINT ctrl+c をキャッチしようとしましたが、要求しているブレークは新しい行の後にのみ処理されます。そのため、実行中のアプリを ctrl+c すると、新しい行がソケットに到着するのを待たなければループが中断されず、アプリが終了しません。
これは最小バージョンです:
ループをすぐに中断してアプリを終了するにはどうすればよいですか?
bash - 終了トラップを持つスクリプトからシェル エラーが発生した場合に、呼び出し元に終了コードを伝達する
EXIT トラップを使用して Bash スクリプトで構文エラーが発生した場合、呼び出し元に終了コードを伝達することは可能ですか? たとえば、私が持っている場合:
次に、実行すると、スクリプトが実際に正常に終了しなかった場合でも、終了コード 0 が返されます。
しかし、終了トラップをコメント アウトすると、スクリプトは 1 を返します。または、バインドされていない変数を含む行をゼロ以外を返すコマンド (たとえば/bin/false
) に置き換えると、その終了値が希望どおりに伝達されます。
bash - SIGINT をフォアグラウンド プロセスに送信すると機能しますが、バックグラウンドでは機能しません
私は2つのスクリプトを持っています。script1はscript2を生成し、それにシグナルを送信しSIGINT
ます。しかし、script2のトラップが機能していないようです?!
スクリプト 1:
スクリプト 2:
に変更./script2 &
し./script2
て押すとCTRL+C
、すべてが正常に機能します。それで、私は何を間違っていますか?
bash - シェル関数でトラップシグナルが機能しないのはなぜですか?
これはうまくいきます:
ただし、次のように実行しても /tmp/.log.pipe は削除されません。
理由と方法を知りたいですか?
これが私のコードです。リモートマシンのログを追跡するために使用します。
c++ - トラップが SIGSEGV のキャッチに失敗する
このスクリプトを使用してトラップをテストしています。
そしてforever.cpp
、再帰関数を実行するだけです:
ただしSegmentation fault: 11
、印刷の代わりに提供しますsegfault
。理由はわかりません。
bash - エクスポートされた関数のトラップは黙って無視されました
この Bash スクリプトは期待どおりに動作します。
test_this.sh
印刷します
ただし、この関数をエクスポートしようとすると、トラップに失敗します。
test_this2.sh
コマンドラインでこれを入手して実行します。
結果は
罠はどこに行った?