为什么isatty在使用emacs时从未发现我的程序正在使用重定向的stdin?这是我的代码:
int val = isatty(STDIN_FILENO);
std::cout << val << std::endl;
如果我从eshell(emacs)启动我的程序:./a.out
它将返回1,如果我启动ls | ./a.out
,它也将返回1.
为什么会这样?哪个条件触发了这个?从python启动它(使用POPEN(shell = True))是安全的吗?
详情: 从isatty()的联机帮助页:isatty - 测试文件描述符是否引用终端。 http://linux.die.net/man/3/isatty