これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレータ、MAC OSオンラインエミュレータなど、複数の無料オンラインワークステーションのいずれかを使用して、OnWorks無料ホスティングプロバイダーで実行できるコマンドsockdownです。
プログラム:
NAME
ソックダウン - shutdown(2)ソケット
ネットパイプ 4.2
SYNOPSIS
ソックスダウン [ fd [の]]
DESCRIPTION
ソックスダウン を実行します shutdown(2)指定されたファイル記述子の1つに対するシステムコール
fd。 の可能な値 の
┌──────────┬──────────────────────────────────────────────────────┐
│writeonly │ 書き込み専用ファイル記述子に変換する │
│0 │ 書き込み専用ファイル記述子に変換する │
│writeonly │ 上記と同じ記号 │
│1 │ 読み取り専用ファイル記述子に変換する │
│読み取り専用 │ 上記と同じシンボル │
│2 │ 完全なシャットダウン。これ以上の読み取りや書き込みは許可されません │
│完全に │ 上記と同じ意味を表す │
└──────────┴──────────────────────────────────────────────────────┘
デフォルト fd 1(標準出力)でデフォルトは の 1です。
例
サービス(この場合はASCIIから
(追記)
server$ faucet 3000 --in --out enscript -2rGhp -
その後、ホースで接続できます。ただし、最初の例ではデッドロックが発生します。
クライアント$ ホース サーバー 3000 -in -out \
sh -c " cat blah.txt & cat > blah.ps "
enscriptは、クライアントのすべてがソケットからの入力を待つわけではないため、ソケットからの入力をブロックします。
プロセスは終了しました。cat blah.txtは終了していますが、cat > blah.psはまだ終了しておらず、
リモートのenscriptプロセスが書き込みを完了するまでは終了しません。enscript
プロセスは読み取りが完了するまで書き込みを完了しませんが、クライアントからサーバーへの半分は
ソケットはまだ開いており、すべてのクライアントプロセスが完了するまで閉じられません。
完了です。結果はデッドロックです。
そこで、パイプの半分を閉じるためにソックダウンを使用します
クライアント$ ホース サーバー 3000 -in -out \
sh -c " ( cat blah.txt ; sockdown ) & cat > blah.ps "
この方法では、cat blah.txtが完了するとソケットの半分がシャットダウンされ、リモート
enscriptプロセスは入力を使い果たし、出力をフラッシュして終了するので、最終的には
混乱全体がきれいに終わります。
注:ホースの & は、デッドロックを防ぐために必要です。単に ; を使用した場合は、
2つのcatプロセスをシリアル化するために、enscriptがその
最初のcatが完了する前にバッファに書き込みを行うと、両方のプロセスがブロックされ、
2匹目の猫がパイプの水を抜いている。
もちろん、hose の慣用的な使用法は非常に便利なので、特別な形式になっています。
クライアント$ ホース サーバー 3000 -slave < blah.txt > blah.ps
イアン・スターリング[メール保護]> 私に知らせる ソックスダウン Linuxで使用できる
/ proc /ピッド/fd/ディレクトリを使って、ネットワーク接続の切断をします。それ以来、私はこれを使い続けています。
ウェッジ型MOMspiderで自分自身を試してみました。これを試すには、プログラムのPIDと
ウェッジソケットのファイル記述子(実行することで見つかることもあります) ストラス と参照してください。
プログラムが read(2)システムコール)。PIDが2でソケットの
記述子が 5 の場合、ルートとしてこれを実行します。
bash# ソックダウン 1 2 > /proc/991/fd/5
エラー
ソケット 操作 on 非ソケット
「無効」 引数 (見た on ソラリス 当学校区の fd 指定したソケットは参照されていません。これは
これは、sockdownを単独で実行した場合に発生します(ファイル記述子のいずれかが
対話型シェルに取り付けられているのは実際にはソケットです)または蛇口/ホースを台無しにした場合
コマンドを忘れた DUP(2)あなたの記述子の1つ。
悪い file 数 間違ったファイル番号を指定しました fd。 十分なスキルがあれば、
実際にこのエラーが発生するので、何が問題なのかはおそらくわかっているでしょう。
他にエラーが発生した場合は、ヒントを教えてください。
onworks.net サービスを使用して sockdown をオンラインで使用する