Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
114 views
in Technique[技术] by (71.8m points)

Is there a way to detect input form file redirection? (C++)

I'm making a program that receives input in 3 ways:

  • keyboard (via cin)
  • file (via argument given at cmd line)
  • and input from file redirect.

I'm making an if-else statement where the first part tests if there was an arg at cmd line and an else when no file was given. Now I'm just trying to find out how to make an if statement to detect whether the input is coming from file redirect. Thank you

Example of what I'm trying to do:

if(argc > 1) {
    //process file
}
else if(/*test for file redirect*/){
    //process input from file redirect
}
else {
    //process standard input
}
question from:https://stackoverflow.com/questions/66055708/is-there-a-way-to-detect-input-form-file-redirection-c

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

On Linux (and most other Unix-style) systems, you can do:

#include <unistd.h>
bool stdin_is_redirected = isatty (0) == 0;

This relies on the fact that stdin is file descriptor 0.

Documentation here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...