Самый простой способ запустить сценарий оболочки target-c
-
10-07-2019 - |
Вопрос
Я новичок в объективе-c, и мне интересно, как проще всего запустить сценарий оболочки. Меня не волнует ни один из результатов. Я пробовал system (), exec () и execl () и NSTask. Эти методы по какой-то причине не работают ... Это сценарий оболочки, который я пытаюсь запустить:
"mount_webdav http://idisk.mac.com/idisk_username/ /Volumes/idisk_username"
(в основном монтирует мой iDisk). Также, никаких паролей-ящиков или каких-либо признаков его работоспособности не видно. Это будет работать в AppleScript, и я создал каталог точки монтирования. Ни один из вышеперечисленных методов вообще ничего не делает или не вызывает сбой приложения по какой-то странной причине.
Решение
NSTask поставляет все, что вам нужно. Это должно работать:
NSArray *args=[NSArray arrayWithObjects:@"http://idisk.mac.com/idisk_username/",@"/Volumes/idisk_username",nil];
NSTask *mountTask=[[NSTask alloc] init];
[mountTask setLaunchPath:@"/sbin/mount_webdav"];
[mountTask launch];
Сначала проверьте полный путь к команде и аргументы из командной строки. Я не использовал mount_webdav, но я думаю, что он требует больше аргументов, чем вы предоставили. Р>
Другие советы
Не используйте сценарии оболочки, когда вы можете помочь. Это хороший способ внести серьезные ошибки при параметризации сценария (например, mount_webdav% @% @
).
Вместо этого используйте NSTask, fork
/ exec
напрямую или (в Python) модуль подпроцесса. Вы передадите три аргумента как массив, а не как одну строку.
NSTask
будет способом сделать это в Какао. Возможно, вы захотите еще раз просмотреть свой код, прочитать документацию к нему (также посмотрите там пример кода) и опубликовать здесь конкретные вопросы по его использованию, если у вас возникнут проблемы.