问题是什么?当从脚本调用进程时,在函数调用 tcgetattr() 时出现 ENOTTY 错误。只有从脚本运行时才会出现错误。如果从交互式 shell 运行,则运行正常。
进程究竟在做什么?进程正在尝试关闭来自 stdin 的规范输入处理。这是必需的,因为输入可能以突发方式到来,并可能占用输入队列。为此,进程使用 tcgetattr() 函数获取 stdin 的终端文件描述符参数。然后关闭 termios 结构中的规范标志。
错误原因?当脚本被调用时,它会以非交互模式运行,这意味着没有附加 tty,因此它对从脚本调用的进程不可用。这就是进程返回 ENOTTY 的原因。
正在寻找?解决方法是否仍然能够从脚本调用该过程而无需对程序进行任何更改?(尝试在脚本中使用 -i 强制交互式 shell,但没有用!!!)
谢谢...