系统(),使应用程序沙箱时,命令无法正常工作(System() command no

2019-10-28 11:22发布

苹果公司现在要求所有未来的应用程序进行沙箱,所以我跟着指示沙箱的应用程序。 构建成功,但随后我的system(rm -rf ~/.Trash/*)命令停止工作。 没啥事儿。 我感到困惑这是为什么这个系统命令不能与App沙箱/应享权利的工作。 这里是我的权利的设置:

待遇:选中

应用程序沙箱:经过

这里是我当前的代码:

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

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

谢谢你的帮助!

Answer 1:

看看文档 。

Mac OS X的寻路的API,POSIX的层之上,返回相对容器,而不是相对于用户的主目录的路径。 如果您的应用程序,你沙盘前,访问用户的实际home目录位置(〜),并且使用的是可可或核心基础的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]);


文章来源: System() command not working when enabling app sandboxing