SORU
5 Ocak 2009, PAZARTESİ


Kakao bir uygulama bir terminal komutu çalıştır

Nasıl bir terminal komutu (grep) Objective-C Kakao uygulama çalıştırabilir miyim?

CEVAP
5 Ocak 2009, PAZARTESİ


NSTask kullanabilirsiniz. İşte aday olacağını bir örnek '/usr/bin/grep foo bar.txt'.

int pid = [[NSProcessInfo processInfo] processIdentifier];
NSPipe *pipe = [NSPipe pipe];
NSFileHandle *file = pipe.fileHandleForReading;

NSTask *task = [[NSTask alloc] init];
task.launchPath = @"/usr/bin/grep";
task.arguments = @[@"foo", @"bar.txt"];
task.standardOutput = pipe;

[task launch];

NSData *data = [file readDataToEndOfFile];
[file closeFile];

NSString *grepOutput = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog (@"grep returned:\n%@", grepOutput);

NSPipe NSFileHandle görevin standart çıktıya yönlendirmek için kullanılır.

Apple'ın Geliştirme Merkezi bu belge görebilirsiniz Objective-C uygulama içinde, işletim sistemi ile etkileşim hakkında daha ayrıntılı bilgi için: Interacting with the Operating System.

Edit: NSLog sorun için düzeltme Dahil

Eğer NSTask komut satırı bash üzerinden programı çalıştırmak için kullanıyorsanız, o zaman NSLog çalışmaya devam etmek bu sihirli satır eklemek gerekir:

//The magic line that keeps your log where it belongs
task.standardOutput = pipe;

Burada bir açıklama: http://cocoadev.com/HowToPipeCommandsWithNSTask

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • gadgetgal38

    gadgetgal38

    9 HAZİRAN 2009
  • SVB International

    SVB Internat

    29 EKİM 2011