Как использовать 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
за это.