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

2023-11-23

In this C program

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

int main()
{
    int file = open("Result", O_CREAT|O_WRONLY, S_IRWXU);

    dup2(stdout, file);
    system("ls -l");

    return 0;
}

我正在尝试重定向输出system()到一个文件,为此我已经使用了dup2但它不起作用。

这段代码有什么问题?
并且,请告诉我是否有有更好的方法来做到这一点? (不使用>在航站楼)


stdout is a FILE *标准输出流的指针。dup2需要文件描述符,而且您还弄乱了参数顺序。 使用

dup2(file, 1);

instead.

关于这部分的更好方法。这种方式很糟糕,因为您可能想在此之后恢复标准输出system通话完成。您可以通过多种方式做到这一点。你可以dup它在某个地方然后dup2它返回(并关闭dup佩一)。我个人不太喜欢自己写cat其他答案中建议的实现。如果您唯一想要的就是使用以下命令重定向单个 shell 命令system到文件系统中的文件,那么最直接、最简单的方法可能是构造 shell 命令来执行此操作,如下所示

system("ls -l > Result");

但是如果文件名(结果)来自用户输入,则必须小心,因为用户可以提供类似的内容'Result; rm -rf /*'作为文件名。

另外,关于安全性主题,您应该考虑指定完整路径ls正如评论中所建议的:

system("/bin/ls -l > Result");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 当我单击 C# 中的“取消”按钮时重定向到新页面(Web 部分)

    Cancel button tc new TableCell btnCancel new Button btnCancel Text Cancel btnCancel Click new EventHandler btnCanel Clic
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • VS30063:您无权访问 https://dev.azure.com

    我正在尝试在 asp net core 2 1 mvc 应用程序中使用以下代码连接 Azure DevOps Uri orgUrl new Uri https dev azure com xxxxx String personalAcces
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 为什么 Ajax.BeginForm 在 Chrome 中不起作用?

    我正在使用 c NET MVC2 并尝试创建一个 ajax 表单来调用删除数据库记录 RemoveRelation 的方法 删除记录的过程正在按预期进行 删除记录后 表单应调用一个 JavaScript 函数 从视觉效果中删除该记录 Rem
  • 在基类集合上调用派生方法

    我有一个名为 A 的抽象类 以及实现 A 的其他类 B C D E 我的派生类持有不同类型的值 我还有一个 A 对象的列表 abstract class A class B class A public int val get privat

随机推荐

  • URL 中的“&”编码问题

    我必须向我的 iPhone 应用程序中的 Web 服务发送 https GET 请求 该应用程序是在 Swift 1 2 中开发的 我正在尝试构造查询字符串参数 但在发送到服务器之前必须对其进行编码 一切正常 但当密码包含 字符时不起作用
  • jQuery 和 Google URL 缩短 API

    我正在尝试使用以下方法缩短网址http goo gl具有以下 jQuery 函数的 API ajax url https www googleapis com urlshortener v1 url key MY API KEY cross
  • Highcharts 实心标距宽度

    我还没有找到解决改变实体仪表数据图宽度的 API 或之前的问题 我可以轻松更改图表宽度 绘图宽度 绘图填充 弧形背景的内部和外部宽度 但不能更改图表 如何防止图表 绿色 与背景 白色 重叠 刚刚创建帐户 所以还不能插入图片 https ww
  • 如何覆盖 ApplicationTagLib#createLink 和 g:link 的标准行为?

    背景 我有 grails 1 3 7 应用程序 它使用g createLink and g link在许多页面上 最近 我决定对 url 映射进行重大更改 引入前面的路径元素 目前我有 controller action id 但想要拥有
  • 为什么我不应该使用 getter 来释放 Objective-C 中的属性?

    有人告诉我StackOverflow 用户释放属性时我不应该使用 getter 方法 property nonatmic retain Type variable synthesize variable wrong self variabl
  • Python端口转发/复用服务器

    我想让服务器侦听 UDP 端口 162 SNMP 陷阱 然后将此流量转发到多个客户端 同样重要的是源端口和地址保持不变 地址欺骗 我想最好的工具是Twisted or Scapy或者也许是香草插座 只是我在 Twisted 的文档中找不到任
  • 许多 Pandas 数据框的箱线图

    我有三个数据框 包含 17 组数据 其中 A B 和 C 组 A 如以下代码片段所示 import pandas as pd import numpy as np data1 pd DataFrame np random rand 17 3
  • 使用 RsaProtectedConfigurationProvider 对 app.config 部分进行加密/解密

    在安装程序期间 我们运行此方法来加密 app config 的部分 Get the application configuration file Configuration config ConfigurationManager OpenE
  • 如何在 Entity Framework Code First 中分离对象?

    没有Detach object entity on the DbContext 我是否能够首先分离 EF 代码上的对象 这是一个选项 dbContext Entry entity State EntityState Detached
  • 用 PHP 编写合并排序

    我尝试在 PHP 中编写一个涉及小数组的基本合并排序 但问题是它需要大约一分钟左右的时间来执行 并返回 致命错误 允许的内存大小 536870912 字节已耗尽 已尝试 分配 35 个字节 在 Users web www merge php
  • 范围 ElasticSearch 聚合

    我需要在 ElasticSearch 中计算管道聚合 但我不知道如何表达它 每个文档都有一个电子邮件地址和金额 我需要输出金额计数的范围桶 并按唯一的电子邮件分组 0 99 300 100 400 100 基本上是预期的输出 密钥将在我的应
  • npm install eslint 缺少参数错误

    我正在尝试在项目文件夹中本地安装 eslint 但是按照上面提到的安装https eslint org npm install eslint save dev 返回以下错误 npm ERR Linux 4 15 0 70 generic n
  • 查看文件所有者无法使用的插座

    创建新的视图控制器时我收到以下消息 一切都在 Xcode 中编译正常 没有错误 但应用程序在从 RootViewController 加载新视图后立即退出 Terminating app due to uncaught exception
  • 窗口更新破坏了 MVC 应用程序

    我昨天运行了 Windows Update 当我尝试发布 ASP NET MVC 4 项目的新版本时 它引入了一些问题 该应用程序在本地编译并运行正常 但是当我将版本推送到网络服务器上的测试站点时 它失败并显示错误消息 System Web
  • 如何制作QheaderView多层次?

    我正在创建一个保存对象发送服务数据的应用程序 我用它创建了Qt 类型模型QStandardItemModel我想用它来显示QtableView But QtableView显示左侧的线路电平 如果可能的话 我想删除它或隐藏它 我也有一个标题
  • 无法连接到 Jenkins 服务器 (Amazon Linux AMI)

    当我在 Amazon Linux AMI 上安装 Jenkins 时 遵循中提到的步骤http bhargavamin com how to do install jenkins on amazon linux aws 安装后 我可以通过浏
  • 当结果集很大时,即使使用索引,mongodb.countDocuments 也会很慢

    mongodb countDocuments当结果集很大时速度很慢 用户收集测试数据 1000 万个带有状态的文档 active 100k 个带有状态的文档 inactive 场status已编入索引 状态 1 db users count
  • 以水平顺序而不是默认的垂直视图在 Shiny 中的元素中显示单选按钮

    我正在开发一个 Shiny 应用程序 使人们能够浏览一些时间序列数据 我有许多小部件 使人们能够选择变量和分析类型 其间 我有一个谦虚的radioButton允许用户为某些变量选择时间序列的机制 radioButtons radio yea
  • Spring Boot中如何配置CORS和基本授权?

    我正在尝试在已设置基本身份验证的 Spring boot 应用程序中配置 CORS 我搜索过很多地方 包括这个答案 这指向基于过滤器的 CORS 支持在官方文档中 到目前为止还没有运气 我的AJAX请求就是这样完成的 如果是从同一个来源完成
  • 如何将 system() 的输出重定向到文件?

    In this C program include