gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:23:55 24 4
gpt4 key购买 nike

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

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

手册说:

The return value from popen() is a normal standard I/O stream in all respects save that it must be closed with pclose() rather than fclose(3).

我的代码是这样的:

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

我的问题是:

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

今天,在我本地的家里,我做了一些测试,fclose()pclose() 没有返回 EOF 指示失败。

最佳答案

根据 this thread ,使用 fclose 而不是 pclose 意味着管道另一端的进程不会被回收,因此它会保持僵尸状态。

关于c - 使用 fclose 到 popen 的管道是一个严重的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com