我怎么知道命令行是: 。/主要 要么: ./main<文件名
答案 0 :(得分:2)
一般来说,你不应该注意或关心,但如果你真的需要,你可以使用像
这样的东西if (isatty(fileno(stdin)))
// getting input from console
else
// probably getting input from a file.
isatty
或fileno
都不是C本身的标准化部分,但两者都包含在POSIX中(如果内存服务)并且在大多数非POSIX系统上也可用(例如,在Windows上,虽然MS认为这些名称已被弃用,但建议分别使用_isatty
和_fileno
。
答案 1 :(得分:1)
如果您使用的是Unix(POSIX)系统,则可以在标准输入文件描述符上使用fstat()
。然后,您可以分析文件类型 - 直到某一点。目前尚不清楚您是否可以可靠且可移植地检测管道输入,但您可以可靠地检测文件和字符设备(可能是终端,除非它是/dev/null
)。