在C中,如何从MacOSX应用程序包中写入文件

neu*_*242 4 c macos file-io core-foundation

我想通过将文本转储到文件来调试我的应用程序中的一些东西,如下所示:

FILE *file; 
file = fopen("/tmp/file.txt","a+");
fprintf(file,"%s\n", "silly debug message"); 
fclose(file);
Run Code Online (Sandbox Code Playgroud)

当我将文件作为./myapplication运行时,这是有效的.但是,当我将其捆绑为应用程序包(使用gtk-osx-applicationgtk-mac-bundler)并运行应用程序包时,不会创建该文件.它无声地失败并继续执行.

有什么想法吗?是否有沙盒正在进行?

Joa*_*son 6

是的,您的应用程序包是沙箱,因此您无法写入文件系统中的任意位置(如/tmp).要访问特定于您的应用的临时目录,请使用NSTemporaryDirectory ;

import <NSPathUtilities.h>

NSString* tempPath = NSTemporaryDirectory();
Run Code Online (Sandbox Code Playgroud)

此处查看有关文件系统访问的更多信息.