Как использовать NSTask с pbcopy? - PullRequest
1 голос
/ 16 мая 2011

Я новичок и у меня проблема. Я хотел бы использовать NSTask с командой "pbcopy". Я пробовал это, но кажется, что это не работает:

NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/echo"];

NSArray *arguments;
arguments = [NSArray arrayWithObjects: @"my-text-to-copy", @"| pbcopy", nil];
[task setArguments: arguments];

[task launch];

Есть идеи? Спасибо.


Работает нормально:

NSTask *task = [[NSTask alloc] init];

NSPipe *pipe;
pipe = [NSPipe pipe];

task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/echo"];
[task setStandardOutput:pipe]; // write to pipe
[task setArguments: [NSArray arrayWithObjects: @"tmp", nil]];
[task launch];
[task waitUntilExit];

task = [[NSTask alloc] init];
[task setLaunchPath:@"/usr/bin/pbcopy"];
[task setStandardInput:pipe]; // read from pipe
[task launch];
[task waitUntilExit];

1 Ответ

2 голосов
/ 16 мая 2011

Канал ("|") - это особенность оболочки, а не аргумент команды, которую вы используете. Вы должны использовать два NSTasks, один для эха и один для pbcopy и установить между ними NSPipe.

Кстати, я предполагаю, что вы просто используете это в качестве примера. В противном случае было бы намного проще использовать NSPasteboard для этого.

...