問題タブ [sigpipe]
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.
linux - Linux crontab では、プログラムの stderr をリダイレクトする必要があります。なぜですか?
に出力できるプログラムを書きますstderr
。Linuxcrontab
で実行する場合は、stderr
. そうでない場合、プログラムは . で終了しSIGPIPE
ます。なんで?
良くないですよ
わかった
perl - ファイル ストリームへの Perl の書き込みにより、予期しない SIGPIPE エラーが発生する
新しく作成されたファイルに文字列を書き込もうとする次の perl コードがあります。
通常、このコードは問題なく動作します。$file が存在するディレクトリへの書き込み権限がない場合、プログラムは失敗しますが、これは予想どおりです。ただし、「ファイル出力エラー!」を出力する代わりに、エラー メッセージとして、プログラムは単に終了コード 13 (アクセスが拒否されました) で終了します。
- ファイルに書き込めないのに open メソッドが成功するのはなぜですか?
- この場合、適切なエラー メッセージを取得するにはどうすればよいでしょうか。
linux - SIGPIPE の防止
次の例を考えてみましょう。
パイプを作成し、子を生成し、このパイプを使用して子の標準出力を読み取る親プロセスがあります。ある時点で、親プロセスは子の出力に関心がなくなり、パイプの読み取り側を閉じます。
どうやら、子が書き込みを続けると、子プロセスがSIGPIPE
シグナルを受信することになります。
質問: 子の出力をリダイレクトして/dev/null
、引き続き実行して出力を生成する方法はありますが、親プロセスは他のことを続けて、後で子を呼び出すことができwaitpid
ますか? 子のシグナル ハンドラーを制御できないため、子のSIGPIPE
ハンドラーを に設定することはできません。SIG_IGN
c - ループバック アドレスへの接続でのパイプの破損 (EPIPE)
現在、ネットワーク コードをテストしています。これには、IPv4 ループバック アドレス (127.0.0.1) を介した接続が含まれます。残念ながら、プログラムはデータの送信時に EPIPE エラーを頻繁に (常にではありません) 返します。
私は Berkeley ネットワーク ソケットと libevent を使用しています。次の方法でノンブロッキングソケットを作成します。
次の方法で接続イベントを作成します。
そしてそれを次の方法で追加します:
接続する:
接続すると、canSend イベントが発生します。
しかし、送信すると EPIPE エラーが発生することがよくあります。
着陸しreturn CB_SOCKET_FAILURE;
、errno が EPIPE に設定されます。これはなぜでしょう?SIGPIPE がこのエラーでプログラムを中断し続けたため、送信フラグが設定されている場合、MSG_NOSIGNAL になります。EPIPE で CBSocketSend が CB_SOCKET_FAILURE を返してプログラムを中断しないようにしたいのですが、送信が EPIPE で失敗する理由がないのに、なぜそうしているのでしょうか?
前回エラーが発生したとき、接続するスレッドがまだ connect() 呼び出しにあることに気付きました。接続イベントを、接続するスレッドとは別のスレッドで処理することに危険はありますか?
次の場所にあるネットワーク コードを参照してください。
https://github.com/MatthewLM/cbitcoin/blob/master/test/testCBNetworkCommunicator.c https://github.com/MatthewLM/cbitcoin/tree/master/src/structures/CBObject/CBNetworkCommunicator https://github. com/MatthewLM/cbitcoin/tree/master/dependencies/sockets
ありがとうございました。
編集:もう一度実行したところ、connect() が終了した後にエラーが発生しました。
EDIT 2:接続イベントは、反対側からの受け入れなしで提供されているようです。
python - Errno 32壊れたパイプ、Errno107トランスポートエンドポイントがPythonソケットに接続されていません
私のTCPサーバーはQt4.7で書かれており、Qt4.7でも書かれたTCPクライアントでうまく機能します。
Python2.7.3で記述されたクライアントを使用してサーバーに接続して通信しようとしています。を使用してApachehttpリクエストを介してサーバープロセスを開始しますsubprocess.call(path_to_server)
。mod_wsgi3.3とdjango1.4を使用しています。
接続は問題なく確立されます。[Errno 32] Broken pipe
ランダムに例外を受信していますsocket.send()
(同じメッセージを10回スパム送信でき、0〜10回送信されます)。socket.shutdown()
&にも同じことが起こりsocket.close()
ます。disconnectコマンドをスパムすると、ランダムに切断されます。それ以外の場合は[Errno 107] Transport endpoint is not connected
例外が発生します。
netstat -napは、接続が確立されたことを示します。
python2.7シェルを使用して同じクライアントスクリプトを実行しようとすると、すべてが正常に機能します。
ここで何が欠けていますか?
EDIT
すべてがWindows7で動作し、同じapache、mod_wsgi、python、django構成を実行します。TCPサーバーもWindowsと互換性があります。centos6.232ビットでエラーが発生します。
linux - Linux SIGPIPE クラッシュ サーバー
だから私のアプリケーションの開始時に私は呼び出します
私のアプリケーションは SIGPIPE を無視すると思いました。ただし、次のコードで SIGPIPE クラッシュが発生します。
ここで、fd は int (ファイル記述子) であり、size は文字列のサイズです。ここで何が間違っていますか?
余談ですが、私は最近、その書き込みを if 内にラップして、返されたエラー値をチェックしていましたが、それが削除されるまで SIGPIPE クラッシュは一度もなかったと思います。if チェックは、エラーがあった場合にコンソールに出力するだけなので、関連があるかどうかはわかりません。
objective-c - BUMP API が統合された iOS プロジェクトでの SIGPIPE 例外
SIGPIPE
Xcode プロジェクトでエラーが発生しています。このエラーは 1 週間前から表示され始めています。このメソッド呼び出しにコメントすると、[self configureBump];
すべて正常に動作します。プロジェクトにBUMP APIを統合しました。この API は 1 週間前まで問題なく動作しています。このエラーの原因についてはわかりません。誰でもこのエラーを解決するのを手伝ってもらえますか? 私の友人の何人かもこのエラーを報告しています。
Xcode バージョン : 4.5 iOS バージョン : iOS 6.0/iOS 5.0
以下のスタック トレースを参照してください。
iphone - IOS での SIG_PIPE のクラッシュを回避する方法
私は頻繁に SIGPIPE のクラッシュに直面してきました。接続の問題が原因であることがわかっています。接続が失われた後にソケットの 1 つが書き込みを試みていますが、問題は、ここでソケット記述子を制御できないことです (.a として tcp クラスを取得しました)。 )、IGNORE や NO_SIGPIPE のように signal() を設定します。したがって、Xcodeを使用して無視する方法はありません。どんな提案も私にとって本当に役に立ちます。
ありがとう
python - IOError: [Errno 32] パイピング時にパイプが壊れました: `prog.py | othercmd`
非常に単純な Python 3 スクリプトがあります。
しかし、それは常に言う:
これを修正するための複雑な方法をインターネットですべて見ましたが、このコードを直接コピーしたので、Python の SIGPIPE ではなく、コードに問題があると思います。
出力をリダイレクトしているので、上記のスクリプトの名前が「open.py」の場合、実行するコマンドは次のようになります。