如何将system()的输出重定向到文件?
发布时间:2020-12-13 18:59:00 所属栏目:Linux 来源:网络整理
导读:在这个C程序中 #include 我正在尝试将system()的输出重定向到一个文件,因为我已经使用了dup2,但它无法正常工作. 这段代码出了什么问题? 如果有更好的方法可以告诉我吗? (不在终端使用>) 最佳答案 stdout是标准输出流的FILE *指针. dup2需要文件描述符,你也
在这个C程序中
我正在尝试将system()的输出重定向到一个文件,因为我已经使用了dup2,但它无法正常工作. 这段代码出了什么问题? 最佳答案
stdout是标准输出流的FILE *指针. dup2需要文件描述符,你也搞砸了参数顺序.
使用
代替. 在更好的方式做这部分.这种方式很糟糕,因为您可能希望在此系统调用完成后恢复标准输出.您可以通过多种方式执行此操作.您可以在某处复制它,然后将其复制(并关闭重复的).我个人不喜欢像其他答案中所建议的那样编写自己的猫实现.如果您唯一想要的是将带有system的单个shell命令重定向到文件系统中的文件,那么可能最直接和最简单的方法是构造shell命令来执行此操作
但是如果文件名(结果)来自用户输入,你必须要小心,因为用户可以提供类似’结果; rm -rf / *’作为文件名. 此外,关于安全性主题,您应该考虑在注释中指定ls的完整路径:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |