Мне нужно иметь возможность запускать файл с помощью кода, который отлично работает, но чтобы убедиться, что он преуспевает, я должен сначала установить исполняемый бит в файле. Я в настоящее время работает chmod +x
через NSTask, но это, кажется неуклюжим:Лучший способ сделать файл исполняемым в Objective-C
NSString *script = @"/path/to/script.sh";
// At this point, we have already checked if script exists and has a shebang
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager isExecutableFileAtPath:script]) {
NSArray *chmodArguments = [NSArray arrayWithObjects:@"+x", script, nil];
NSTask *chmod = [NSTask launchedTaskWithLaunchPath:@"/bin/chmod" arguments:chmodArguments];
[chmod waitUntilExit];
}
Есть предложения? Мне не повезло найти примеры кода, и единственным другим вариантом является NSFileManager's setAttributes:ofItemAtPath:error:
с атрибутом NSFilePosixPermissions
. Я буду делать логику чтения и записи POSIX, если понадобится, но хотел бы посмотреть, есть ли более элегантный метод.
Просто немного примечания: так как строковые литералы являются постоянными, нет необходимости использовать '+ [NSString stringWithString:]' в первой строке. –
Да, это не в моем фактическом коде (только для того, чтобы сделать его очень понятным, что представляет скрипт), но я изменил его, чтобы быть более сенсационным. –