2012-01-05 11 views
0

Objective-Cで記述された "PseudoTTY"と呼ばれるオープンソースのXcodeプロジェクトがあり、プログラムでコマンドを実行する方法を見つけようとしています。私がアプリケーションをコンパイルするとき、私はちょうど私がしたいことをする素敵な小さなターミナルウィンドウを取得します。コマンドを手動で入力する必要があることを除いて。プログラムでプログラムを実行するPseudoTTY

私がしたいことは、プログラムで端末でコマンドを実行し、プログラムで結果を解析できるようにすることです。関心の

スポットは以下のとおりです。

- (void)keyDown:(NSEvent *)event 
{ 
    const char * typein = [[event characters] UTF8String]; 

    [[pty_ masterFileHandle] 
      writeData:[NSData dataWithBytes:typein length:strlen(typein)]]; 
} 

-(void) didRead: (NSNotification *)noty 
{ 
    NSData * data = [[noty userInfo] objectForKey:NSFileHandleNotificationDataItem]; 

    if ([data length] == 0) 
     return; // end of file 

    NSString * str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

    [self insertText:str]; 
+0

お困りですか? –

+0

@Carl質問を更新しました。質問を追加しました。 – alexy13

答えて

0

あなたがする必要があるすべてはあなたの選択の文字列でtypeinを交換し、それはあなたがやりたいだろうです。 didRead:メソッドでは、出力はstrになります。

char *myCommand = "ls"; 
[[pty_ masterFileHandle] writeData:[NSData dataWithBytes:myCommand 
                length:strlen(myCommand)]]; 
+0

興味深いですね。私はチャンスを得るときにそれを試してみましょう! – alexy13

+0

Enterキーを押してコマンドを実行するようにウィンドウに指示するにはどうすればよいですか?ありがとう! – alexy13

関連する問題