Использование NSTask в качестве пользователя root - ошибка: «путь запуска недоступен» - PullRequest
0 голосов
/ 23 апреля 2011

По какой-то причине, когда я пытаюсь запустить задачу через NSTask, я получаю сообщение об ошибке: «Путь запуска недоступен».

Мое приложение работает от имени пользователя root.И если я набираю ту же команду EXACT в терминале, она работает нормально, поэтому я немного сбит с толку.

Мое приложение копирует инструмент под названием Relayunch в NSTemporaryDirectory().Если я пытаюсь запустить его отсюда, я получаю «путь запуска недоступен».Вот странная вещь: если я вручную скопирую инструмент на рабочий стол, а затем жестко закодирую путь в NSTask, он будет работать правильно.И у меня есть 0 идей, почему.

Кто-нибудь знает, почему это происходит?

Примечание: Просто к вашему сведению, пытаюсь заставить Sparkle работать с github.

Вот код:

@try{
[NSTask launchedTaskWithLaunchPath:relaunchPath arguments:[NSArray arrayWithObjects:pathToRelaunch, [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]], nil]];
}

Где

relaunchPath = @"/var/folders/zz/zzzivhrRnAmviuee+++++++++++/-Tmp-/relaunch";

1 Ответ

0 голосов
/ 24 апреля 2011

Сообщение об ошибке приходит из вашего приложения или из-за перезапуска?Если вы не изменили свою стандартную ошибку, чтобы она указывала куда-либо еще, она будет записывать в тот же stderr, что и ваше приложение, так что вы могли бы на самом деле успешно запустить перезапуск, и сообщение об ошибке фактически приходит от перезапуска.

Добавитьблок @catch после вашего @try, чтобы увидеть, действительно ли сбой NSTask, и отметьте pathToRelaunch.

Если у вас есть блок @catch, отредактируйте ваш вопрос, чтобы включить его.Если выясняется, что при повторном запуске происходит сбой, но pathToRelaunch выглядит правильно, отредактируйте свой вопрос, включив в него соответствующий исходный код из инструмента повторного запуска.

...