Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Entwickler
>
Shell Kommandos aus Cocoa Anwendungen aufrufen?
Shell Kommandos aus Cocoa Anwendungen aufrufen?
stefan
05.02.05
17:27
Weiss jemand, ob es möglich ist, aus einer Cocoa Anwendung heraus Shell Kommandos (z.B. ls) auszuführen und das Ergebnis abzuholen?
Mit AppleScript geht das, das kann ich aber nicht brauchen.
Hilfreich?
0
Kommentare
dtlmtn
05.02.05
17:54
Klar geht das, siehe die Cocoa Klasse NSTask unter
Falls Du Shell Kommandos ausführen möchtest, gib als ausführbare Datei /bin/bash (oder deine bevorzugte Shell) an, und als Argument das Kommando. Macht Sinn?
Hilfreich?
0
dtlmtn
05.02.05
17:58
Oder Du rufst ein AppleScipt aus Cocoa auf (siehe
aber das macht mehr Aufwand da es keine spezielle Klasse hierfür gibt.
Hilfreich?
0
dtlmtn
05.02.05
18:06
Mit NSTask sieht das so aus. Am Ende der Routine ist die gesamte Ausgabe von "ls -l" im NSString "result" (das encoding muss evtl. an die verwendete Shell angepasst werden):
// create new NSTask and connect the output via NSPipe
NSTask *pipeTask = [[NSTask alloc] init];
NSPipe *newPipe = [NSPipe pipe];
NSFileHandle *readHandle = [newPipe fileHandleForReading];
NSData *inData = nil;
// run bash shell with command 'ls -l'...
[pipeTask setArguments:[NSArray arrayWithObjects:@"-c", @"ls -l", nil]];
[pipeTask setStandardOutput:newPipe];
[pipeTask setLaunchPath:@"/bin/bash"];
[pipeTask launch];
// ...and save all output into 'out'
NSMutableData *out = [NSMutableData data];
while ((inData = [readHandle availableData]) && [inData length]) {
[out appendData:inData];
}
// close task
[pipeTask release];
// convert NSData to NSString
NSString *result = [[NSString alloc] initWithData:out encoding: NSASCIIStringEncoding];
Hilfreich?
0
stefan
05.02.05
18:20
dtlmtn
Mit NSTask sieht das so aus. ...
danke, das probiere ich gleich mal aus. Momentan bekomme ich nur irgendwelche Exceptions.
Das Problem ist, dass ich für eine Carbon Anwendung ein Cocoa Plugin bauen muss und da gibt es immer ein paar Unstimmigkeiten.
Hilfreich?
0
stefan
05.02.05
18:25
dtlmtn
Mit NSTask sieht das so aus. ...
SUPER, das funktioniert. Jetzt muss ich nur noch ein paar Parameter ändern, dann bin ich fertig.
DANKE!!!
Hilfreich?
0
stefan
06.02.05
14:06
weisst du, ob es so etwas auch für Carbon gibt?
Hilfreich?
0
dtlmtn
07.02.05
02:16
Keine Ahnung, habe nie Carbon verwendet. Sorry.
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Kurz: Apple bietet iPhone 15 erstmals refurbish...
Interview: Größte private Mac-Sammlung
Apple Intelligence: Weiterhin Nonsens-Zusammenf...
Leak in macOS 15.2 Sequoia: Neues MacBook Air k...
Test: eversolo DMP-A10
Facebook & Instagram: Zuckerberg kündigt Aus de...
News zur Mac-Woche: MacBook Pro mit 24 GB RAM? ...
Das Apple-Frühjahr 2025