プロが教える店舗&オフィスのセキュリティ対策術

sshで、リモートにあるサーバのシェルスクリプトからexeを
たたいた場合、exe内のprintfを実行するとsshを実行した端末に
その内容が表示されます。
つまり、exeのprintfの標準出力がsshを実行した端末に向いている
ということでしょうか?
それでは、端末を閉じた場合、exe内のprintfの標準出力はどこを向くのでしょうか?
バックグラウンドでシェルが起動するようにしているので、psコマンドで
exeのプロセスが生きているのは確認できます。
もう一つ質問ですが、exe内で複数スレッドでprintfを実行した場合は、SIG_PIPEは
発生しますでしょうか?

A 回答 (2件)

>それでは、端末を閉じた場合、


>exe内のprintfの標準出力はどこを向くのでしょうか?

出力先は変わらないです。
HUPでkillされてしまいますね。SIGHUPで死ななければ、
恐らく数分後にSIGPIPEくらうでしょう。
    • good
    • 0

ファイルデスクリプタのつながりは、


 exeプログラム(1)==(pipefd)sshd(socketfd)==(socketfd)ssh端末
です。
sshdでは、pipeを作成した上でforkし、子プロセスでは0と1を作成されたpipefdに付け替えた上でexecによりexeプログラムに化けていると思います。
sshdがpipefdで受け取った、exeプログラムの標準出力の結果は、暗号化モジュールを通した後sshクライアントとつながっているソケットにwrite、sshクライアントはそれを受け取るので、見た目はexeプログラムの標準出力がsshクライアントとつながっているように見えるのです。

>もう一つ質問ですが、exe内で複数スレッドでprintfを実行した場合は、SIG_PIPEは
発生しますでしょうか?

たったそれだけでSIGPIPEは起きないと思います。
SIGPIPEは相手側がcloseしたファイルに対する書き込み時に発生するものです。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!