Самый простой способ запустить сценарий оболочки target-c - PullRequest
0 голосов
/ 01 декабря 2009

Я новичок в объективе-c, и мне интересно, как проще всего запустить сценарий оболочки. Меня не волнует ни один из результатов. Я пробовал system (), exec () и execl () и NSTask. Эти методы почему-то не работают ... Это сценарий оболочки, который я пытаюсь запустить:

"mount_webdav http://idisk.mac.com/idisk_username/ /Volumes/idisk_username"

(в основном монтирование моего iDisk). Также, никаких паролей-ящиков или каких-либо признаков его работоспособности не видно. Это будет работать в AppleScript, и я создал каталог точки монтирования. Ни один из вышеперечисленных методов вообще ничего не делает или не вызывает сбой приложения по какой-то странной причине.

Ответы [ 3 ]

2 голосов
/ 01 декабря 2009

Не используйте сценарии оболочки, когда вы можете помочь. Это хороший способ внести серьезные ошибки при параметризации скрипта (например, mount_webdav %@ %@).

Вместо этого используйте либо NSTask, fork / exec напрямую, либо (в Python) модуль подпроцесса. Вы передадите три аргумента как массив, а не как одну строку.

2 голосов
/ 01 декабря 2009

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, но я думаю, что он требует больше аргументов, чем вы предоставили.

1 голос
/ 01 декабря 2009

NSTask был бы способ сделать это в Какао. Возможно, вы захотите снова просмотреть свой код, прочитать документацию по нему (также посмотрите там пример кода) и опубликовать здесь конкретные вопросы по его использованию, если у вас возникнут проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...