Apple现在要求所有未来的应用程序都是沙盒,所以我按照说明沙盒应用程序。构建成功但后来我的system(rm -rf ~/.Trash/*)
命令停止工作。没啥事儿。我觉得这里令人困惑的是为什么这个系统命令不适用于App Sandboxing / Entitlements。以下是我的权利设置:
权利:已检查
应用沙盒:已检查
这是我目前的代码:
- (void)viewDidLoad {
[self emptyTrash];
}
- (void)emptyTrash {
system(rm -rf ~/.Trash/*);
}
感谢您的帮助!
答案 0 :(得分:0)
POSOS层上方的Mac OS X路径查找API返回路径 相对于容器而不是相对于用户的家 目录。如果您的应用程序在沙箱之前访问了位置 用户的实际主目录(〜),您正在使用Cocoa或Core 然后,在启用沙盒后,基础API将进行路径查找 代码会自动使用您应用的容器。
你可以使用
struct passwd *getpwuid(uid_t uid);
struct passwd {
char *pw_name; /* user name */
char *pw_passwd; /* encrypted password */
uid_t pw_uid; /* user uid */
gid_t pw_gid; /* user gid */
__darwin_time_t pw_change; /* password change time */
char *pw_class; /* user access class */
char *pw_gecos; /* Honeywell login info */
char *pw_dir; /* home directory */
char *pw_shell; /* default shell */
__darwin_time_t pw_expire; /* account expiration */
}
#include <pwd.h>
#include <sys/types.h>
char *HomeDirectory = getpwuid(getuid())->pw_dir;
NSLog(@"%s", HomeDirectory);
system([[NSString stringWithFormat:@"rm -rf %s/.Trash/",HomeDirectory] UTF8String]);