Самый простой способ запустить сценарий оболочки target-c

StackOverflow https://stackoverflow.com/questions/1822828

  •  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 будет способом сделать это в Какао. Возможно, вы захотите еще раз просмотреть свой код, прочитать документацию к нему (также посмотрите там пример кода) и опубликовать здесь конкретные вопросы по его использованию, если у вас возникнут проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top