我有一个csh程序,ssh进入服务器并运行一些命令。如果ssh失败,则错误将打印在屏幕上,程序不知道该错误..并返回一个空白的输出列表。我怎么知道ssh失败了?有没有办法将STDERR重定向到FD以外的其他东西?
答案 0 :(得分:0)
我不知道你实际执行ssh的方式。
如果您system()
,我建议您使用popen()
。它将允许您检索程序的输出。您将能够从文件描述符中读取它,而不是显示它。然后,您可以向您的命令附加重定向,以便将stderr重定向到stdout,并在fd中检索。
如果你确实需要将stdout和stderr分开,那么你需要实现一个高级的popen()
,它也会自己重定向stderr。您可以使用dup2()
和fork()
来完成此操作。