stdin はどこから読み込む?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
cuser

stdin はどこから読み込む?

#1

投稿記事 by cuser » 1年前

Windows, C 言語についてです

次のような文を含むソースプログラムから生成した実行プログラムを
下のイメージのように実行したとき
stdin がパイプラインかリダイレクトのどちらから読み込んだかわかる方法はありますか
(わかったところで実用性はないかもしれませんが疑問に思ったので)

コード:

ch = fgetc(stdin);
実行したときのイメージ
  1. C:\> echo aaa | prog1.exe
  2. C:\> prog1.exe < datafile1

box
記事: 2002
登録日時: 13年前

Re: stdin はどこから読み込む?

#2

投稿記事 by box » 1年前

プログラム側では知るすべはありません。
パイプであろうがリダイレクトであろうが
同じ標準入力として扱うのみです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ripple

Re: stdin はどこから読み込む?

#3

投稿記事 by ripple » 1年前

box さんが書きました:
1年前
プログラム側では知るすべはありません。
そんなことはないです。
POSIX関数ならfstat()でわかるし、Windowsシステムコール使うならGetFileType()でわかります。
https://stackoverflow.com/questions/131 ... al-or-pipe

box
記事: 2002
登録日時: 13年前

Re: stdin はどこから読み込む?

#4

投稿記事 by box » 1年前

そうですか。それは知りませんでした。
区別できて何がうれしいんだろうとは思いますけどね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

cuser

Re: stdin はどこから読み込む?

#5

投稿記事 by cuser » 1年前

ripple さんが書きました:
1年前
POSIX関数ならfstat()でわかるし、Windowsシステムコール使うならGetFileType()でわかります。
https://stackoverflow.com/questions/131 ... al-or-pipe
正にリンク先のようなことが知りたかったんです
ありがとうございます
英語でも検索しないといけないんですね

それにしても、何よりも「海路の日和」があってよかったです

解決です

返信

“C言語何でも質問掲示板” へ戻る