如何将system()的输出重定向到文件?

前端之家收集整理的这篇文章主要介绍了如何将system()的输出重定向到文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在这个C程序中

#include dio.h>
#include 

我正在尝试将system()输出重定向到一个文件,因为我已经使用了dup2,但它无法正常工作.

这段代码出了什么问题?
如果有更好的方法可以告诉我吗? (不在终端使用>)

最佳答案
stdout是标准输出流的FILE *指针. dup2需要文件描述符,你也搞砸了参数顺序.
使用

dup2(file,1);

代替.

在更好的方式做这部分.这种方式很糟糕,因为您可能希望在此系统调用完成后恢复标准输出.您可以通过多种方式执行此操作.您可以在某处复制它,然后将其复制(并关闭重复的).我个人不喜欢像其他答案中所建议的那样编写自己的猫实现.如果您唯一想要的是将带有system的单个shell命令重定向文件系统中的文件,那么可能最直接和最简单的方法是构造shell命令来执行此操作

system("ls -l > Result");

但是如果文件名(结果)来自用户输入,你必须要小心,因为用户可以提供类似’结果; rm -rf / *’作为文件名.

此外,关于安全性主题,您应该考虑在注释中指定ls的完整路径:

system("/bin/ls -l > Result");
原文链接:https://www.f2er.com/linux/440063.html

猜你在找的Linux相关文章