Как использовать NSTask с pbcopy?

Я новичок, и у меня есть проблема. Я хотел бы использовать 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 ответ

Решение

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

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

Другие вопросы по тегам