【问题标题】:Sharing a FILE pointer between libraries在库之间共享 FILE 指针
【发布时间】:2011-09-13 08:35:43
【问题描述】:

我有一个简单的问题;我在我的一个库中使用FILE* fp 到文件的fopen/fwrite,我想在另一个库中对fp 执行fclose() - 其他库获取文件句柄的最佳方法是什么?

【问题讨论】:

  • 一般来说,在同一上下文/任务中处理同一级别的文件的打开和关闭被认为是最佳实践。与内存分配/释放相同。 (但您的情况可能有特定要求)
  • 这是一个奇怪的要求;奇怪的要求通常(认为并不总是)表明设计不正确或以错误的方式解决问题。
  • 两个库是否使用相同的运行时?

标签: c file io fopen stdio


【解决方案1】:

如果您的两个库相互通信,则第一个应在函数调用中将 FILE* 传递给第二个。

如果库不相互通信,那么主应用程序应该从第一个库中获取FILE* 并将其交给第二个库。或者更好的是,应用程序应该拥有FILE*,把它交给已经打开的第一个库,然后把它交给第二个库完成关闭,最后应用程序应该自己关闭FILE*。当您拥有类似于文件但没有名称的东西时,尝试处理需要文件名而不是 FILE* 的库可能会非常令人沮丧。

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2013-11-28
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    相关资源
    最近更新 更多