Frage

Ich bin ein Objective-c newbe und frage mich, wie ein Shell-Skript in Objective-c einfachste Weg möglich laufen. Ich kümmere mich nicht um jede der Ausgabe. Ich habe versucht, system (), exec () und execl () und eine NSTask. Diese Methoden nicht aus irgendeinem Grunde arbeiten ... Das ist der Shell-Skript ich zu laufen versuche:

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

(Grundsätzlich Montage meine iDisk). Auch keine Passwort-Boxen oder jede Angabe davon arbeiten zeigt. Es wird in Applescript arbeiten, und ich habe das Mount-Punkt-Verzeichnis erstellt. Keine der oben genannten Methoden tun irgendetwas, oder Absturz der Anwendung aus irgendeinem seltsamen Grund.

War es hilfreich?

Lösung

NSTask liefert alles, was Sie brauchen. Dies sollte funktionieren:

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];

Test alle der kompletten Befehlspfade und args von der Befehlszeile zuerst. Ich habe nicht mount_webdav verwendet, aber ich denke, es ist mehr args erfordert, als Sie geliefert.

Andere Tipps

Verwenden Sie keine Shell-Skripte, wenn Sie es helfen kann. Sie sind eine gute Möglichkeit, gravierende Fehler einzuführen, wenn Sie das Skript parametrieren (zum Beispiel mount_webdav %@ %@).

Verwenden Sie stattdessen entweder NSTask, fork / exec direkt oder (in Python), um das subprocess Modul. Hier finden Sie die drei Argumente als Array übergeben, anstatt als einzelne Zeichenfolge.

NSTask wäre die Möglichkeit, dies in Cocoa zu tun. Sie könnten wieder über den Code gehen wollen, denn es ist auf der Dokumentation nachlesen (auch bei dem Beispielcode aussehen dort), und senden Sie spezielle Fragen zu seiner Verwendung hier, wenn Sie Probleme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top