我必须为学校制作一个简单的应用程序。
我必须在终端上每行写一个参数,并在标准输出上返回用户选择。
比如我写的cat my_app main.c main.h,如果用户选择了main.c,那么我回到main.ccat。问题是,如果我在标准输出(又名 STDOUT_FILENO)上写菜单,我会将它返回到cat. 我可以在 STDERR 上写我的菜单,但它有点难看。
我真的不知道如何使用/dev/tty*或 之类的设备/文件/dev/pty*,但我觉得我可以用它们在终端上写一些东西,而不必在 STDOUT 或 STDERR 上写。
基本上,我想打开一个新的输出,它将由终端(STDOUT、STDERR、MYOUT)显示。
不知道我解释的对不对。
要构建您可以打开的交互式应用程序/dev/tty,它将向控制终端返回一个文件描述符:
int ttyfd = open("/dev/tty", O_RDWR);
Run Code Online (Sandbox Code Playgroud)
您可以使用它代替STDIN_FILENOor STDOUT_FILENO(在程序启动时,它们可能会被重定向到与终端不同的地方)。
下面是一些例子:
int ttyfd = open("/dev/tty", O_RDWR);
Run Code Online (Sandbox Code Playgroud)
当调用./test >out,它应该打印终端和东西就hello消息像fd: 3中out的文件。