stdin, конзолата и клавиатурата еднакви ли са в C?
stdin и входът от конзолата и клавиатурата еднакви ли са
Отговори (3)
От isatty(3)
man страница:
Функцията isatty() тества дали fd е дескриптор на отворен файл, отнасящ се до терминал.
#include <unistd.h>
int isatty(int fd);
isatty() връща 1, ако fd е дескриптор на отворен файл, препращащ към терминал; в противен случай се връща 0 и errno е настроено да указва грешката.
Така че isatty(stdin)
ще върне различна от нула, ако е въведена, и нула, ако е пренасочена.
person
amphetamachine
schedule
27.12.2010
Това означава, че stdin и конзолата не са едно и също.
- person mouviciel; 27.12.2010
isatty() се доближава, въпреки че терминалът не се управлява непременно от клавиатура или въвеждане от потребителя, но ситуациите, в които се управлява програмно, са такива, при които се очаква програмата да се държи така, сякаш получава въвеждане от клавиатурата.
- person Chris Stratton; 27.12.2010
Да, това е правилно. По същество можете да имате системно извикване read() за приемане на вход от stdin.
person
atx
schedule
27.12.2010
Не е задължително. stdin
може да бъде пренасочен от файл (напр. executable < input
) или друго неинтерактивно устройство.
Отговорът на amphetamachine ви дава инструмента, за да направите разликата.
person
John Bode
schedule
27.12.2010