問題タブ [stdio]
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でfprintfをブロックするにはどうすればよいですか?
fprintf
システムが IO ビジーでありながら CPU が大量にある場合、約 10 秒間不当にブロックされる呼び出しがあります。基になるストリームもsetvbuf
、基になる fd を で開いたこともありませんO_DIRECT
。これは、ストリームに stdio ストリームとシステム キャッシュの両方があることを意味します。
fprintf
どうすればこんなに長い間通話がブロックされるのかわかりません. write(2)
基になるストリームのストリーム バッファがいっぱいになるという最悪のケースでは、libc は単にバッファの内容をディスクに書き込むために呼び出すだけだと思います。しかし、私の知る限り、write(2)
で開かれていない fdO_DIRECT
では、ディスク転送を待機しません。つまり、ディスク IO に関しては非同期です。したがって、時間のかかる作業は、書き込まれたデータに対してカーネルがキャッシュを割り当てることだけだと思いますが、システムがメモリ不足の場合でも、これは 10 秒の作業とは思えません。実際、システムには数十 MB の空きメモリと数 GB のメモリがキャッシュされています。
何かアドバイスはありますか?
ありがとう。
python - プロセスがパイプとして実行されているかどうかを確認します
パイプとしてのみ実行する必要がある小さなPythonユーティリティがあります。スタンドアロンで実行したときにヘルプメッセージを出力してほしい。プロセスは、パイプとして使用されているかどうかをどのように知ることができますか。比較するsys.stdin
とsys.__stdin__
機能しません。
linux-kernel - Linuxでキーボードからアプリケーションまでの文字のパスは何ですか?
1980 年代のコンピューター雑誌 (Kilobaud? Creative Computing?) に、キーを押すとキー コードがどのように発行されるか、デバイス ドライバーを介してどのように渡され、ASCII コードに変換され、イベント ハンドラーを介して送信されるかについて説明した記事がありました。何とか何とかなり、最終的には、stdin(または同等のもの)を介してアプリケーションによって受信されたバイト(またはその他)として終了します。アプリケーションがそれに対して行ったことは、この記事の範囲外です。この記事は、技術的な実用性というよりも、当時のオペレーティング システムとデバイス ドライバーの複雑さを示す点で興味深いものでした。
2010 年には、非常に大きなカーネル、ロード可能なモジュール、unixey tty の層とパイプ、およびマルチプロセッシングを備えた Linux があります。仕方?
技術的なもの (ポップ サイエンス マガジン レベルに骨抜きにされていないもの) を探していますが、カーネルや低レベルの IO 動作の専門家でなくても理解できるものを探しています。
(そのような記事がない場合は、先に書いて、ここに回答として投稿してください!)
c - Cを使用してファイルから2次元配列を読み取る方法は?
私は試した:
入力ファイルは次のとおりです。
出力は次のとおりです。
そのマトリックスはどこから来たのですか?
python - これらの2つのプロセス(プログラム)をパイプを使用して直接相互に通信させるにはどうすればよいですか?
プログラムAは、無限に入力を受け取り、処理してstdoutに出力するACプログラムです。
プログラムB(Python)を作成して、Aの出力を読み取り、必要なものをフィードバックします。これらの各プログラムのインスタンスは1つだけでなければならないことに注意してください。したがって、次の代わりにbのインスタンスであるb1とb2を指定します。
私は持っている必要があります
以下は、最終的に望ましい結果の図です。
c++ - MFC GUI アプリケーションで使用される c++ dll のコンソール出力のリダイレクト
printfまたはcoutを使用してコンソール出力を介して多くの有用な情報を報告するC++ dllがあります。この dll を MFC で記述された GUI アプリケーションにリンクしており、その出力にアクセスしたいと考えています。
かなり単純ですね。何時間もインターネットを検索し、いくつかの解決策を実装した後、どれもうまくいかなかったとき、私は驚きました!
そのため、アプリケーションに関する追加情報が必要になる場合があります。アクセスできない巨大なホスト アプリケーションがあります。実際、私はそれにプラグインを書いています。実行時にプラグイン dll をリンクします (LoadLibrary() を使用すると思います)。私のdllは、今度は、取得したい出力の外部dllを使用します。この dll は、対応する lib ファイルを介して静的にリンクされているため、CRT がすべての読み込みを行います。
私の知る限り、すべてのアプリケーション (どのような方法でロードされた dll も含む) には、単一の stdout ストリーム (単一の stdin と単一の stderr) があります。そして、それは私にとって物事が複雑になりすぎるときです. この stdout ストリームを (明らかに、アプリケーション/プロセス全体に対して) リダイレクトしようとしましたが、場合によっては MY dll では機能しましたが、EXTERNAL dll ではまだ機能しません。つまり、dll のようなものを使用するとcout << "Hey!";
、ストリームをリダイレクトしたファイルでこれを確認できます。ただし、外部 dll 内からの同じ呼び出し (はい、ソースはありますが、実際には変更したくありません) は何もしません。神は、この出力がどこで行われるかを知っています。
私はもう試した:
- 古き良き
freopen()
トリック。私のDLLでは機能しましたが、外部DLLには影響しません。 - WinAPI
SetStdHandle()
呼び出し。まったく機能しません。Win7 で問題が発生しているようです。 AllocConsole()
+_open_osfhandle()
. 1 と同じです。コンソールに出力が表示されますが、外部 dll の出力は表示されません。cout.rdbuf()
再割り当てします。3 と同じですが、cout のみです。
ええと、皆さん、私は本当に助けが必要です。私は立ち往生しているようです:-/
追加情報:
ホスト アプリケーション、私の dll、および外部 dll は、MSVS'05 を使用して開発されました。すべての dll には、「スタティック ライブラリで MFC を使用する」設定があります。テストは Win7 x64 で行われました。私はすべてのソースを持っていますが、それらを変更する権限はありません。
c - putcにはstdoutが必要ですが、putsは
ここでCの歴史の質問。putc
C関数が次のような2番目のパラメーターを必要とするのはなぜですか
パットはとても便利ですが
msvc++には関数があります
これは、期待どおりputc
に機能します。putc
の2番目のパラメータはファイルに転送できることだと思いましたが、そのためputc
の関数がありますfputc
。
c - C でのファイルとコンソールへの書き込み
Cでコンソールとファイルに書き込むことができる関数を作成しようとしています.
次のコードがありますが、引数を追加できないことに気付きました (printf など)。
私はここで立ち往生しています。任意のヒント?function:footprints に送信する引数は、文字列、文字、および整数で構成されます。
ラッパーを作成できる他の printf または fprintf fns はありますか?
ありがとうございます。返信をお待ちしております。
java - STDIO を Java アプリの GUI コンポーネントにリダイレクトするにはどうすればよいですか?
CI では単純にいくつかのパイプを作成し、dup2 を使用して std ファイル記述子を上書きしますが、反対側では、ブロック IO を利用して無限ループで各出力パイプ (sdtout、sdterr) のスレッドを作成します。コンソールの提案に合わせて textArea/canvas を更新するためのパイプ。stdin については、そのようなコンポーネントの主要なイベントをリッスンし、それらをパイプに書き込みます。
しかし、swing を使用して Java でそれを実行するにはどうすればよいでしょうか?
プロジェクト ディレクティブとしてネイティブ コードを混在させることはできません。これまでに多くのプロジェクト ディレクティブを破ったので、それを進めることはできません...
また、VT100 など、ある程度の端末エミュレーションを提供することもクールですが、そのような機能を Java アプリに通知する方法については、unix で TERM envvar を設定します。
CI では次のようになります。
objective-c - 単項 '&' オペランドとして必要な Objective C の LValue
私のコードでは、クラス プロパティへのポインターを取得しようとすると、このエラーが発生します。
(Python で小さな *.OBJ ファイル トランスレータを作成し、法線を破棄しました)
コード: