1

Apple 现在要求对所有未来的应用程序进行沙盒处理,因此我按照说明对应用程序进行沙盒处理。构建成功,但随后我的system(rm -rf ~/.Trash/*)命令停止工作。没啥事儿。我在这里感到困惑的是为什么此系统命令不适用于 App Sandboxing/Entitlements。这是我的权利设置:

权利:检查

应用沙盒:选中

这是我当前的代码:

- (void)viewDidLoad {
[self emptyTrash];
}

- (void)emptyTrash {
system(rm -rf ~/.Trash/*);
}

谢谢你的帮助!

4

1 回答 1

0

看看文档

Mac OS X 路径查找 API,在 POSIX 层之上,返回相对于容器而不是相对于用户主目录的路径。如果您的应用在沙箱之前访问用户实际主目录 (~) 中的位置,并且您使用的是 Cocoa 或 Core Foundation 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]);
于 2012-07-02T09:55:17.650 回答