如何将system()的输出重定向到文件?
发布时间:2020-05-23 14:18:20 所属栏目:Linux 来源:互联网
导读:在这个C程序中#include stdio.h #include fcntl.h int main() { int file = open(Result, O_CREAT|O_WRONLY, S_IRWXU); dup2(stdout, file); system(ls -l); r
在这个C程序中
我正在尝试将system()的输出重定向到一个文件,因为我已经使用了dup2,但它无法正常工作. 这段代码出了什么问题?
代替. 在更好的方式做这部分.这种方式很糟糕,因为您可能希望在此系统调用完成后恢复标准输出.您可以通过多种方式执行此操作.您可以在某处复制它,然后将其复制(并关闭重复的).我个人不喜欢像其他答案中所建议的那样编写自己的猫实现.如果您唯一想要的是将带有system的单个shell命令重定向到文件系统中的文件,那么可能最直接和最简单的方法是构造shell命令来执行此操作
但是如果文件名(结果)来自用户输入,你必须要小心,因为用户可以提供类似’结果; rm -rf / *’作为文件名. 此外,关于安全性主题,您应该考虑在注释中指定ls的完整路径: (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 将char * number转换为int32_t的正确方法
- ruby-on-rails – 将Ruby 2.0.0-p247更新为Ruby-
- linux – 使用Automake更正GCC命令行排序
- linux – CVS Diff只输出修改过的文件?
- linux – `是什么意思!这个Bash命令中的-d`?
- linux – Cronjob周六开始每周运行一周,从周六开
- linux – Busybox,netstat,没有-p
- linux – 清除/ proc / meminfo中没有drop_cache
- LINUX实战:基于PHP实现商品成交时发送短信功能
- 使用GNU / Linux系统调用`splice`在Haskell中进行
热点阅读