使用 fclose 到 popen 的管道是一个严重的错误?

2023-12-29

几个月前,我为 Linux 编写了一个 CGI 应用程序,它使用popen()读取命令的输出,然后我关闭管道fclose().

现在,我读到关闭管道需要使用pclose().

手册说:

返回值来自popen()是一个普通的标准I/O流 尊重除了它必须关闭pclose()而不是fclose(3).

我的代码是这样的:

if ((NULL != (f = popen(command.value, "r")))) {
    //do something
    fclose(f);
}

我的问题是:

我的错误有安全问题吗?该计划目前正在制作中。在测试中它没有做任何问题。确实需要,使用补丁pclose()反而fclose()?注意:我在程序中只打开了一次PIPE。

今天,在我当地的家里我做了一些测试fclose() and pclose()不返回EOF表示失败。


根据这个线程 http://cboard.cprogramming.com/cplusplus-programming/97147-pclose-vs-fclose.html, using fclose代替pclose意味着管道另一端的进程没有被收获,因此它保持僵尸状态。

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

使用 fclose 到 popen 的管道是一个严重的错误? 的相关文章

  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 一元 +/- 运算符如何可能导致“-a”或“+a”中的整数提升,“a”是算术数据类型常量/变量?

    这句看似微不足道的台词摘自我的迈克 巴纳汉和布雷迪的 C 书 第 2 8 8 2 节 http publications gbdirect co uk c book chapter2 expressions and arithmetic h
  • 在 omp 并行 for 循环中使用 unique_ptr 会导致 SEG.FAULT

    采取以下代码 include
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

    我正在构建一个 WCF 服务 该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息 我的单元测试之一调用Global Application Start 它执行应用程序的配置 然后尝试将 Web 服务解析为 验
  • 搜索实体的所有字段

    我正在尝试在客户数据库上实现 多功能框 类型的搜索 其中单个查询应尝试匹配客户的任何属性 这是一些示例数据来说明我想要实现的目标 FirstName LastName PhoneNumber ZipCode Mary Jane 12345
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • bash "&" 不打印 "[1]+ Done "

    我在 bashrc 中调用一个脚本来打印打开终端时收到的新消息数 我希望该调用在访问网络时是非阻塞的 有时需要几秒钟 这意味着我无法使用终端直到完成 但是如果我输入 mailcheck 在我的 bashrc 中 它工作正常 但然后打印一个空
  • 使用 jQuery 从 ASP.Net JSON 服务获取数据

    我正在尝试调用 Google 地图地理编码 API 从纬度 经度对中获取格式化的地址 然后将其记录到控制台 我正在尝试获取为给定位置返回的第一个 formatted address 项目 我很简单无法从 JSON 中提取该项目 我不知道为什
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T

随机推荐

  • 是否可以将多个验证组分配给单个验证控件?

    我有一个这样的表格 UserID has to be validated when user clicks Check Availability and Submit 因此 必须为 UserID 必需的字段验证器分配两个组 好像现在只分配了
  • 组件更新时重置 Snackbar 上的 autoHideDuration 计时器

    我希望只有当组件未更新时 小吃栏才会在 2 秒内超时 如果它更新了 我希望计时器在还没有达到 2 秒时重置 useEffect gt setOpen true props single message return div props si
  • 在哪里可以找到 DockerCli.exe

    我正在尝试将 Docker 切换到我的 Windows Server Core 1903 计算机 无桌面 上的 Windows 容器 This https forums docker com t cli to switch between
  • 可重写的方法不能是静态的:我还能怎样做我想做的事情?

    我有一系列静态类 用于获取枚举值的字符串 它们看起来都是这样的 public static class MyEnumToString private static Dictionary
  • JS 将参数作为变量传递给匿名函数并稍后调用 -> 参数值问题

    我在调用带有作为变量传递的参数的匿名函数时遇到问题 如果我在将变量作为参数传递给匿名函数后将其保存到数组中 那么我更改变量并调用该函数 它会打印变量的最后一个值 而不是我推送匿名函数时变量的值进入我的数组 我在以下示例中简化了代码 var
  • 使用 R 求解方程

    我如何在 R 中以数值方式求解以下形式的方程的根 f r r c 1 B c exp M B r 其中M B和c是已知常数 提前致谢 由于 R 无法执行此功能 您可能需要使用像 Sage 这样的超集包 Sage 包含 R 和许多其他软件包
  • 着色器编译器如何工作?

    是否有人参考了有关着色器编译器 图形驱动程序编译器内部工作的特定文档和研究 编写普通的C编译器和编写着色器编译器没有太大区别 关于编写编译器的标准书籍是所谓的 龙书 http www amazon com Compilers Princip
  • ASP.NET MVC 4,在将视图模型对象用作操作方法参数之前如何访问/修改视图模型对象(并更改视图和操作方法)?

    ASP NET MVC MVC4 中是否有任何有用的挂钩 可以让您在调用操作方法之前访问操作方法参数 视图模型 然后也可以 例如 取决于您在操作方法中检查的内容的值 参数 让您阻止调用操作方法 即将视图模型对象 操作方法参数 转发到另一个操
  • 在生产中使用 GCC 的 C++0x 模式?

    有人用GCC 4 4 0吗C 0x http gcc gnu org gcc 4 4 cxx0x status html生产支持 我正在考虑将它与最新的 MinGW 一起使用 但我不确定它是否足够成熟 我对 感兴趣 TR1 支持 auto
  • Cloud Functions for Firebase 中的本地依赖项

    当我尝试部署我的功能时 firebase 抱怨这一点 const admin require firebase admin const functions require firebase functions const C require
  • 无法从Python目录中打开文件[重复]

    这个问题在这里已经有答案了 我编写了一个小模块 首先查找目录中的所有文件 然后合并它们 但是 我在从目录打开这些文件时遇到问题 我确保我的文件和目录名称是正确的 并且文件实际上位于该目录中 下面是代码 seqdir results outf
  • java 获取 Active Directory RootDSE

    我正在尝试使用 java 获取 Active Directory rootDSE 这是我到目前为止所做的尝试 public class RootDSE public DirContext context public Attributes
  • 从IP地址查找时区

    当我只有 IP 地址时 有没有办法找到用户所在的时区 我正在寻找需要应用于服务器时间的时间偏移 以便找到用户位置的时间 您需要尝试确定位置 远非 100 准确 看这个问题 https stackoverflow com questions
  • 如何使用 JdbcCursorItemReader 和多线程从 Oracle Db 读取数据

    我有 Spring Batch 应用程序并配置了如下步骤 ThreadPoolTaskExecutor taskExecutor new ThreadPoolTaskExecutor taskExecutor setCorePoolSize
  • 有没有办法防止selenium自动终止空闲会话?

    我正在使用 selenium 来自动化与网站的一些交互 此过程涉及打开多个浏览器并让它们间歇性地执行操作 然而 偶尔会出现长时间 gt 1 小时 不活动的情况 并且 selenium 似乎会在大约 30 分钟没有被调用后自动终止浏览器会话
  • 为什么Java中方法调用中间要使用括号?

    尽管我做了一些广泛的搜索 但我遇到了一些代码 但无法理解它的某些方面 我的问题是 为什么在方法调用中间使用括号 package com zetcode import java awt event ActionEvent import jav
  • 如何使用 apache Camel 创建 IAM 用户?

    我有一个骆驼休息API 我试图使用 apache Camel 框架创建一个 IAM 用户 代码是这样的 gt post iam create user route process new Processor Override public
  • 我应该将安全代码与不安全代码混合在一起吗?

    我正在开发一个使用大量 WIN32 API 调用并需要一些不安全代码的项目 从最佳实践的角度来看 我是否应该将此代码隔离在使用 unsafe 开关编译的其自己的 DLL 中 同时保持主应用程序的安全 换一种方式 有什么理由不使用 unsaf
  • SVN - 在提交主干时提交外部

    简短而甜蜜 我有一个带有外部的项目 它允许我在一项操作中提交对该外部文件的更改以及对主干的更改 我有另一个带有外部的项目 它确实not允许我在主干旁边提交更改 最明显的区别是第二个外部被签出到复合目录 但除此之外我找不到任何区别 据我所知
  • 使用 fclose 到 popen 的管道是一个严重的错误?

    几个月前 我为 Linux 编写了一个 CGI 应用程序 它使用popen 读取命令的输出 然后我关闭管道fclose 现在 我读到关闭管道需要使用pclose 手册说 返回值来自popen 是一个普通的标准I O流 尊重除了它必须关闭pc