Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
132 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 Answer

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...