問題タブ [dup]
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.
c - fopen +stream_dupでのストリーム記述子の損失
私は次のコード例を持っています(Windowsで):
さらに使用するにはfdの値が必要ですが、値を失うことなくファイルから読み取るにはどうすればよいfd
ですか?
c - 誰かが C の dup() の機能を説明できますか?
私は、dup、dup2、dup3 が「ファイル記述子 oldfd のコピーを作成する」ことを知っています(man ページから)。でも消化できない。
私が知っているように、ファイル記述子はファイルの場所とその方向(入力/出力)を追跡するための単なる数字です。する方が簡単ではないでしょうか
ファイル記述子を複製したいときはいつですか?
そして何か他のもの..
dup() は、番号が最も小さい未使用の記述子を新しい記述子に使用します。
それは、 stdin、stdout、またはstderrのいずれかをclose()したと仮定すると、値としても取ることができるということですか?
c - dup2ファイルへのソケット
すべて、冬が来て、plzは暖かく健康を保ちます。仕事についての瞑想中に、私はfddup2の機能についていくつか質問を受けました。ソケットサーバーとクライアントを作成します。サーバーが送信し、クライアントがデータを受信します。しかし、クライアントがサーバーにあるファイルから直接データを読み取れるようにするために、サーバーソケットfdをファイルdfにdup2したいと思います。私は次のように書きます
しかし、それは機能しませんこれは可能ですか?これについて何かアドバイスをいただけますか?ありがとう
c - STDOUTとSTDERRをCのソケットにリダイレクトしますか?
STDOUTとSTDERRをソケットにリダイレクトしようとしています。
やった:
どういうわけか、それは出力の最初の小さな部分だけを示しました。
たとえば、lsまたはmkdirを実行しようとすると、「mkdir」に表示されました。
どうしたの?
以下を試してみましたが、STDOUTまたはSTDERRのいずれかしかリダイレクトできません
どうもありがとう。
c - なぜclose()システムコールが出力をフラッシュするのですか?
これが私のコードです:
私が実際にやろうとしているのは、write() システム コールの代わりに printf() を使用して、「スタック オーバーフロー」をファイルに出力することです。
コンテンツをファイルに出力していません。しかし、私が観察したことの1つは、コードを削除すると:
期待どおりに内容をファイルに出力しています。しかし、私はその理由を理解できません。内容を印刷してから、newfd を閉じるだけです。
これの理由は何ですか?
ruby - インスタンス変数は「dup」後も参照しています
クラスのオブジェクトがあり、それを で複製したいと考えていdup
ます。インスタンス変数の 1 つが配列で、それを参照しているようです。dup は実際に DUPLICATE を作成したと思いました。
これが私の IRB セッションです。
参照ではなく、まったく新しい変数を作成するa
ため、変更されないことが期待されます。dup
[1,2,3]
また、 でスカラーに置き換えた場合G::initialize
、はそれを参照しないことに注意してくださいdup
。
ruby - Ruby の複製/クローンを再帰的に
私は次のようなハッシュを持っています:
このハッシュの複製が必要です。変更は元のハッシュに影響を与えるべきではありません。
試してみると、
ここでは、が別のハッシュ オブジェクトであるproject['duration']
ため、元のハッシュで is が変更されていることがわかります。project
duped
ハッシュをまたはcloned
再帰的にしたい。どうすればこれを達成できますか?
c - Cでstdoutをリダイレクトするときの奇妙な動作
stdoutをファイルにリダイレクトしてから、Cで元のファイルに復元しようとしていますが、次の奇妙な問題に直面しています。次のコードは
in stdout
in stdout
、stdoutとin file
それぞれのファイルに正常に書き込まれます。
ただし、メイン関数の最初の行を削除します。
stdout
in file
in stdout
に書き込まれ、ファイルには何も書き込まれません。これはどうして起こったのだろうか?助けてくれてありがとう。
python - C 呼び出し用に Python から stdout をリダイレクトする
これは、特にその答えに関するhereからのフォローアップの質問です。
Python モジュールから、単に標準出力に出力するHello WorldHello World
実行可能ファイルを呼び出しています。その出力をPythonにリダイレクトすることに興味があり、このStringIO
回答に出くわしました。これにより、ほとんど解決策にたどり着きました。
この回答の重要な部分は、次のコード セグメントです。
また、リダイレクト前の標準出力を復元したいと思います。
質問
- 上記の関数で正確に何が起こっているのでしょうか?
dup
とは何dup2
ですか?- とは
/dev/null
? - 8 行目は何をしているのですか? (
sys.stdout = os.fdopen(newstdout, 'w')
)
StringIO
stdout をオブジェクトに保存するにはどうすればよいですか?- Hello Worldプログラムを呼び出した後、stdout を復元するにはどうすればよいですか?
質問 1 の答えがわかれば、質問 2 と 3 の答えも簡単になると確信しています。とにかく投稿して、質問1の答えを自分の行きたい方向に押し進めることにしました。
python - Pythonのdup、dup2、tmpfile、およびstdout
これはhereからのフォローアップの質問です。
行きたいところ
Pythonがまだ標準出力に出力できる間に、標準出力を一時ファイルに一時的にリダイレクトできるようにしたいと考えています。これには、次の手順が含まれます。
- stdout のコピーを作成します (
new
) - 一時ファイルを作成する (
tmp
) - stdout をリダイレクトする
tmp
new
stdout として使用するように Python に指示するtmp
「実際の」stdout にリダイレクトする- 「本物の」stdout を再度使用するように Python に指示します。
- 読んで閉じる
tmp
実装
上記を次の方法で実装しようとしました。
ここで少し休憩してまとめたいと思います。
ここまでのコンソールへの出力は次のようになります。
whilesil
次のようになります['0.3\n']
。したがって、ここまですべてが魔法のように機能しています。ただし、上記のスクリプトをもう一度やり直すと、次のようになります。
エラーが発生し、出力は次のようになります。
whilesil
読み取り: ['0.3\n', '']
.
つまり、2 番目Func("1.3", True)
は一時ファイルに書き込むことができません。
質問
- まず、スクリプトが動作したいように動作しない理由を知りたいです。つまり、一時ファイルへの書き込みがスクリプトの前半でしかできないのはなぜですか?
dup
との使い方にはまだ少し戸惑っていますdup2
。stdout の一時ファイルへのリダイレクトがどのように機能しているかは理解していると思いますが、なぜos.dup2(new, 1)
それが何をしているのかが完全にわかりました。おそらく、答えは、スクリプト内のすべてのdup
anddup2
s が何をしているのかについて詳しく説明できるかもしれません^^