gpt4 book ai didi

ios - 在具有后台功能的 iOS 应用程序中使用重新打开的标准文件描述符?

转载 作者:行者123 更新时间:2023-11-28 08:51:10 25 4
gpt4 key购买 nike

我希望能够将我的日志记录语句重定向到一个文件,以便我可以在我的应用程序独立运行时检索它们(即未附加到 Xcode)。我发现(感谢 Stackoverflow)可以使用 freopen 来完成此任务。

如果我创建一个新的 Xcode 项目并添加代码以重定向 stderr,那么一切都会按预期进行。

但是,当我将重定向代码添加到我现有的蓝牙项目时,我遇到了麻烦。该文件正在创建,我可以使用 iTunes 或 Xcode 的设备窗口检索它,但它的大小为 0。如果我明确关闭该文件,那么我编写的文本实际上会进入该文件。就好像 iOS 在应用程序终止时没有刷新文件一样。我怀疑问题源于我启用了后台处理。谁能帮助我理解这一点?

这是我的代码:

    let pathes = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true);
let filePath = NSURL(fileURLWithPath: pathes[0]).URLByAppendingPathComponent("Test.log")
freopen(filePath.path!, "a", stderr);

fputs("Hello, Samantha!\r\n", stderr);

struct StderrOutputStream: OutputStreamType {
static let stream = StderrOutputStream()
func write(string: String) {fputs(string, stderr)}
}
var errStream = StderrOutputStream.stream
print("Hello, Robert", toStream: &errStream)

fclose(stderr) // Without this the text does not make it into the file.

最佳答案

我会把它留作评论,但你有没有研究过 NSFileHandle?听起来您只需要一种将数据附加到文本文件末尾的方法,对吗?

一旦你有了像 NSFileHandle(forWritingToURL:) 这样的句柄,你就可以使用 .seekToEndOfFile().writeData(_:)。作为旁注,您需要在写入之前将字符串转换为数据。

诚然,这最终可能会变成更多行代码,而且您几乎肯定需要考虑线程。

关于ios - 在具有后台功能的 iOS 应用程序中使用重新打开的标准文件描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34158093/

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