我只需要找到一个非常烦人的错误,有人用popen打开管道,但用fclose而不是pclose关闭了c文件。在Linux上这没问题,但后来这个程序在OSX上编译,结果出了问题。
所以我想知道,当用popen而不是fclose关闭由pclose创建的管道时,会出现什么问题?为什么这是在Linux上工作,而不是在OSX/BSD上?

最佳答案

它可能只适用于linux,例如,您没有注意到这个问题。这些问题列出了在需要fclose的地方使用pclose时程序可能出现故障的几种方式(在各种平台上):
use fclose to pipe of popen is a serious bug?
fclose()/pclose() may block on some file pointers
对于因未正确关闭管道而可能发生的不好的事情(例如,zombie processes)。在某些情况下,程序可能会打开一次管道,然后第二次无法打开管道。

关于linux - 当使用popen创建的FILE上的fclose发生什么情况?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30281256/

10-12 15:32