在同一个函数中调用下一个 popen 之前,我可以对多个 popen 使用相同的文件描述符而不关闭它吗? 长期运行会不会有任何运行时错误的内存泄漏? 例如
fun()
{ FILE *fd = popen (some_command, "r");
fd = popen (another_command, "r");
fd = popen (another_command, "r");
... and so on..
fclose(fd); //at the end of the program
}
最佳答案
不要那样做。您将丢失上一个 popen
调用返回的 FILE*
,因此您将无法 pclose()
那些。因此,这会造成资源泄漏,内存不会被释放,并且您可能永远不会终止启动的进程。
还请注意,您应该调用 pclose()
而不是 fclose()
关于我可以在不关闭文件描述符的情况下打开多个 popen 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20425893/