問題タブ [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.

0 投票する
3 に答える
792 参照

c - remove() オープンファイルは「安全」ですか?

入力ファイルと出力ファイルの両方に同じファイル名を使用する可能性をプログラムに追加して、入力ファイルを置き換えることを考えています。

処理されたファイルは非常に大きい可能性があるため、最初にファイルを開き、それを削除して新しいファイルを作成するのが最善の解決策だと思います。つまり、次のようになります。

(もちろんエラーハンドリングも追加)

remove()すべてのシステムで開いているファイルを削除できるわけではないことを認識しており、その場合に失敗する限り、それは許容されます。

開いているファイルを削除して、その内容を読み取れないシステムがないか心配です。

C99 標準では、その場合の動作を「実装定義」として指定しています。SUSはそのケースについてさえ言及していません。

あなたの意見/経験は何ですか? 心配する必要はありますか?そのような解決策を避けるべきですか?

編集: これは主要な機能ではなく、ユーザーが入力ファイルと出力ファイルの両方に同じファイル名を指定した場合の「最後の手段」であることに注意してください。

編集: わかりました、もう 1 つ質問があります: この特定のケースでは、私が提案した解決策は、出力ファイルを書き込み専用で開くだけでなく、より多くの悪を実行できる可能性があります (つまり、上記のように、remove()呼び出しなしで)。

0 投票する
8 に答える
7834 参照

c - Cで入力ストリームをフラッシュするにはどうすればよいですか?

ここでstdinをフラッシュできませんが、フラッシュする方法はありますか?そうでない場合は、入力バッファにgetchar()残された「\ n」の代わりに、ユーザーからの入力として文字を取得する方法を教えてください。scanf()

編集:更新されたコード、まだ正しく機能していません

出力:

0 投票する
6 に答える
7547 参照

python - 別のプログラムの出力をその場で入力として取得する

このように使用しているプログラムは2つあります。

c_programはを使用して何かを出力しprintf()、python_program.pyはを使用して読み取りますsys.stdin.readline()

python_program.pyが印刷時にc_programの出力をすぐに処理して、それ自体の現在の出力を印刷できるようにしたいと思います。残念ながら、python_program.pyは、c_programが終了した後にのみ入力を取得します。

どうすればこれを解決できますか?

0 投票する
6 に答える
133991 参照

c - CでのEOFの検出

次のCコードを使用して、EOFが発生するまでユーザーから入力を受け取りますが、このコードが機能せず、最初の入力を受け取った後に終了するという問題があります。誰かがこのコードの何が問題なのか教えてもらえますか?前もって感謝します。

0 投票する
2 に答える
339 参照

linux - バックグラウンド操作の検出

Cでは、プログラムを検出する方法は「バックグラウンドモード」で呼び出されましたか?インタラクティブまたはバックグラウンドで起動したいプログラムがあります。

stdinから読み取ってはならず、「Stopped:ttyinput」状態で終了するべきではないことをどのように検出できますか?

stdinが閉じていることをテストする必要がありますか?どうやってやるの ?

編集:isattyは良い考えのようですが、stdinがパイプエンドであり、ttyではない場合はどうなりますか?

0 投票する
3 に答える
7519 参照

c - ソケット上のgetline

getlineと同じことをするが、FILE *ストリームの代わりに接続されたソケットで動作するlibc関数はありますか?

回避策は、ソケットでfdopenを呼び出すことです。そうするとき、世話をしなければならないことは何ですか。それをする/しない理由は何ですか。

それを行う明らかな理由の1つは、getlineとcoを呼び出すことですが、カスタムgetlineを書き直す方がよいのではないでしょうか。

0 投票する
2 に答える
6998 参照

c - 基になるファイル記述子を閉じずにFILEポインターを閉じます

を使用するとfdopen()fileno()既存のファイル記述子を使用してストリームを開くことができます。ただし、ファイルをストリームで開いた後、ファイルを閉じる適切な方法はfclose()FILEポインタを使用することです。どうすればストリームを閉じても、開いているファイル記述子を保持できますか?

この動作は、呼び出してからを呼び出してからfflush()、閉じる場合を除いてポインタを再度fileno()使用することはありません。FILEさらに懸念されるのは、fdopen()もう一度すると、複数のFILEポインターがあり、そのうちの1つしか閉じることができないということです。

0 投票する
5 に答える
1857 参照

c - char *a、*b; (ba) とはどのような型で、どのように印刷すればよいですか?

通常は動作しますが、実際には、32 ビットまたは 64 ビットのマシンで警告が表示されたり失敗したりすることは想像できません。しかし、それは ANSI C とサイズ認識のために適切なことでしょうか? Unix 以外や組み込みシステムを含む、可能なすべてのプラットフォームでこのコードが動作することを望みます。

0 投票する
2 に答える
5508 参照

c++ - freopen: 元のストリームに戻しています

生成された一部の印刷物と通常の標準出力への復帰を分離するために、標準出力を別のファイルに転送する必要がありました。

freopenはこの方法でファイルに切り替えていました:

実際には機能しますが、プロセスの最後に (stdout が以前と同じ方法で何度もリダイレクトされることに注意してください)、元の stdout に戻すことができません。私は次のことを試しました:

しかし、それはうまくいかないようです..私がmacosxで開発している情報のためだけに。

私は何をすべきか?

前もって感謝します

0 投票する
3 に答える
8060 参照

c - fclose()/pclose() が一部のファイル ポインタでブロックされる場合がある

fclose()子プロセスが終了するまで、ファイル記述子ブロックを ing した後、ここで呼び出しますdup()(おそらくストリームが終了したため)。

ただし、のpipe()fork()、を手動で実行してから、パイプの読み取りファイル記述子を ing すると、元のファイルを閉じてもブロックされません。execvp()popen()dup()

なぜこれが発生するのですか? また、FILE *返された fromを閉じてpopen()、代わりにファイル記述子を使用するにはどうすればよいですか?

アップデート:

ドキュメントには を使用するように記載されていますがpclose()fclose()ブロックも同様です。さらに、私は glibc コードをいじって、 をpclose()呼び出すだけfclose()です。fclose()またはを使用しても、動作は同じpclose()です。