標準入力が、ファイルなのかパイプなのかを判断する

シェルスクリプト総合 その11

674 :名無しさん@お腹いっぱい。 [] :2008/07/16(水) 11:04:03
標準入力が、ファイルなのかパイプなのかを判断するシェルを発行してください。
端末なのかどうかは [ -t 0 ] で発行できますが、
そうじゃなく、ファイルなのかパイプなのかを判断するシェルです。
お願いします。
675 :名無しさん@お腹いっぱい。 [↓] :2008/07/16(水) 12:07:49
cat FILE | cmd
cmd < FILE

この違いを cmd で検知しると? 発行できんと思うのれすが・・・
676 :名無しさん@お腹いっぱい。 [↓] :2008/07/16(水) 12:14:57
fstat(2)するコマンドをCで書け。
677 :名無しさん@お腹いっぱい。 [↓] :2008/07/16(水) 12:21:05
>>675
それが、できるんだな
解答のMD5貼っとくから、オマエラ悩めよ。

3562e8356217828e58a17b6ad647cbd2
678 :名無しさん@お腹いっぱい。 [↓] :2008/07/16(水) 13:14:59
cmd() {
test -p /dev/stdin && echo 'pipe' || echo 'not pipe'
}
cat /dev/null | cmd
cmd < /dev/null

http://pc11.2ch.net/test/read.cgi/unix/1211284684/