1

到目前为止,我认为如果文件名参数 ( fname) 为空,程序会stdin自动读取。

if (!strcmp(fname, ""))
    fin = stdin;

但我需要知道这stdin是通过管道输入还是交互的,因为我可能会得到类似的东西:

rsm: reading from (stdin)
^Z
rsm:(stdin):1: not an attribute: `√┘2ç∩'

如果使用交互式输入。我可以使用某种库函数吗?

4

1 回答 1

4

在 Posix 系统上,您可以使用isatty

#include <stdio.h>
#include <unistd.h>

if (isatty(STDIN_FILENO))
{
    // interactive stdin
}

在 Windows 上,您可以使用相应的功能_isatty

于 2013-09-29T20:44:55.567 回答