• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

NSTask: was ist nmit setLaunchPath

Alecco

Transparent von Croncels
Registriert
17.02.09
Beiträge
306
Hi!

Ich möchte gerne ein Befehl im Terminal ausführen. Dazu benutze ich NSTask. Ich wollte Testweise mal die Audio-Ausgabe etwas sagen lassen. Leider weiß ich nicht, was genau in den LaunchPath gehört. Ist es so, dass z.B. der Befehl "say" ein Link auf das entsprechende Programm /??/??/say ist und deshalb der Pfad angeben werden muss?

Später möchte ich mit convert Bilddateien ändern.

Code:
-(IBAction)startConverting:(id)sender{
    NSTask *task;
    task = [[NSTask alloc] init];
    [task setLaunchPath: @"/bin/sh"];
    
    NSArray *arguments;
    arguments = [NSArray arrayWithObjects: @"say hello", nil];
    [task setArguments: arguments];
    
    [task launch];
    [task waitUntilExit];
}

Hoffe auf eure Hilfe.
 
Möchtest Du wirklich, dass das Terminal aufgeht und dort dann 'say hello' ausgeführt wird? Oder willst Du einfach nur, dass 'say hello' ausgeführt wird? Im letzteren Fall probiere mal folgendes:
Code:
-(IBAction)startConverting:(id)sender
{
    NSTask *task;
    task = [[[NSTask alloc] init] autorelease];
    [task setLaunchPath: @"/usr/bin/say"];
    
    NSArray *arguments;
    arguments = [NSArray arrayWithObjects: @"hello", nil];
    [task setArguments: arguments];
    
    [task launch];
    [task waitUntilExit];
}
MacApple
 
Ja, ich wollte nur einen Befehl ausführen. "say" war jetzt nur als Test gedacht :)

Danke!
 
Nochmal eine Rückfrage:

Woher weiß ich, wodurch
Code:
/usr/bin/say
bei einem beliebigen anderen Aufruf ersetzt wird. Also wie finde ich heraus, wo z.B. Funktion "xyz" liegt?

Gruß :)
 
Zum Beispiel durch Eingabe von:

Code:
which <gewünschtes Terminal Programm>
im Terminal.

MacApple