Frost Moon Project

リダイレクト/パイプを使用しているか識別する方法 - Frost Moon Project アクセスランキング

Home > Tips > リダイレクト/パイプを使用しているか識別する方法

リダイレクト/パイプを使用しているか識別する方法

  1. 問題
  2. 解決方法

問題
a.exe < file
dir /b | b.exe
の様に、リダイレクトやパイプが使用されているか如何かを識別し、
それに因って処理を分岐させるには如何すれば良いのでしょうか?
解決方法
isatty(fileno(stdin))を実行するだけで識別することが出来ます。
偽ならリダイレクトやパイプが使用されており、
真なら使用されていません。
あんぱん屋さん
1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
#include<unistd.h>
 
int main(){
    if(!isatty(fileno(stdin))){
        printf("元気100倍!!!\n");
    }else{
        printf("顔が濡れて力が出ない...\n");
    }
}
        

※VCで利用する場合、unistd.hではなくio.hをincludeして下さい。


無事、リダイレクト/パイプを使用しているか識別することが出来ました。

関連Tips
リダイレクト/パイプでstdinを使用した後、fgets()で文字の入力を行う方法

Copyright(C) 2007-2025 Frost Moon Project


Home > Tips > リダイレクト/パイプを使用しているか識別する方法