2

我需要运行一个脚本并可以访问我程序中的默认标准输入(终端输入)。我可以做 ./program "script",通过程序打开和解析脚本,但我想让它成为 POSIX 风格,接受来自管道或重定向的输入。

我的意思是,由于我的程序是一个解析器,我可以运行 ./program,键入脚本并仍然使用标准输入(例如在 scanf 中)。但我想运行 ./program < script 并且仍然能够使用标准输入(在 scanf 中)。

我的程序是一个简化的 Pascal 解释器,这就是为什么我需要在我的脚本read(x)中运行。write(x)

是的,这是家庭作业(解释器),但在头脑风暴过程中突然出现了疑问。

4

3 回答 3

2

/dev/tty即使标准输入已被重定向,也可以使用 访问当前控制终端。

于 2009-06-30T21:14:13.643 回答
1

ttyname(0) 将返回与标准输入关联的当前终端的文件名。然后,您可以打开它并从中读取。

于 2009-06-30T20:42:00.963 回答
0

如果我理解您的要求,那么您要求的是在使用文件重定向时能够接收用户的交互式输入,例如上面的 ./program < 脚本位。

我不相信有办法做到这一点。POSIX 系统将通过标准输入输入脚本,仅此而已。没有来自用户的交互。

还值得注意的是,您不必做任何特别的事情来实现这一点。像往常一样对待标准输入。您不必考虑它是交互输入还是来自文件,这非常好。

于 2009-06-30T20:41:13.227 回答