Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在目标C中执行chmod()_Objective C_C_File Permissions_Chmod - Fatal编程技术网

Objective c 如何在目标C中执行chmod()

Objective c 如何在目标C中执行chmod(),objective-c,c,file-permissions,chmod,Objective C,C,File Permissions,Chmod,C的等价物是什么: chmod(MY_FILE, 0777); 在目标C中?我试图写入现有的锁定文件而不执行 chmod +x MY_FILE 在终端上。您可以使用C的chmod() 在终端中输入man 2 chmod以获取文档和相关功能。您可以使用cocoa进行此操作 NSTask *changePerms = [[NSTask alloc] init]; [changePerms setLaunchPath:@"/bin/chmod"]; NSArray *chmodArgs = [N

C的等价物是什么:

 chmod(MY_FILE, 0777);
在目标C中?我试图写入现有的锁定文件而不执行

chmod +x MY_FILE

在终端上。

您可以使用C的
chmod()


在终端中输入
man 2 chmod
以获取文档和相关功能。

您可以使用cocoa进行此操作

NSTask *changePerms = [[NSTask alloc] init];
[changePerms setLaunchPath:@"/bin/chmod"];
NSArray *chmodArgs = [NSArray arrayWithObjects:@"666", @"/Users/abc/hello.txt", nil]; 
[changePerms setArguments:chmodArgs];
[changePerms launch];
这是使用NSFileManager类的另一种方法

NSDictionary* attr = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithShort:0766], NSFilePosixPermissions, NULL];

NSError *error = nil;
[[NSFileManager defaultManager] setAttributes:attr ofItemAtPath:@"/Users/abc/Desktop/test.txt" error:&error];
使用system()调用

希望这有帮助

你可以用可可来做这项工作

[[NSFileManager defaultManager] setAttributes:@{ NSFilePosixPermissions : @0666 }
                                 ofItemAtPath:… 
                                        error:&error];

当然,您需要这样做的权限。

Objective-C是C的超集。您可以在iOS/OSX上运行的任何C代码都可以复制粘贴到您的Objective-C文件中,它就可以工作了。@Linuxios,除了
int NSArray:-(@)PaxDIABLO,当然,除非你避免<代码> @导入< /代码> INCOCO.H,基金会.H等,但这将是一个相当无聊的Objto-C!您的第一个代码片段非常糟糕。当
chmod()
随时可用时,使用外部命令实际上是零。可以使用原始C代码,也可以依赖任何框架API。我给出的两个选项都是使用框架。最好使用
[NSNumber numberWithUnsignedLong:\uuuuu]
,因为chmod可以处理更大的值。为了证明这一点,在文件上执行
chmod u+s
,然后在文件上执行
stat-r
,并查看第三个参数。(至少这是我Mac电脑上的第三个。)你会看到这个数字比一个有符号的空头所能容纳的32768和一个无符号的空头所能容纳的65535都要大。将同一个数字与chmod一起传递到另一个测试文件,您将看到chmod接受这个无符号的long value.IMHO,@newbieMACUser要求使用ObjC方法,而不是C方法,并且C方法要求您使用library includes。使用Objc,比默认的目标C文件所获得的标准基础材料更合适,并且不需要额外的内容。
[[NSFileManager defaultManager] setAttributes:@{ NSFilePosixPermissions : @0666 }
                                 ofItemAtPath:… 
                                        error:&error];