我是初学者,我遇到了问题。我想使用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];
答案 0 :(得分:2)
管道(“|”)是shell的一个特性,而不是您正在使用的命令的参数。您必须使用两个NSTasks
,一个用于回声,一个用于pbcopy,并在它们之间设置NSPipe
。
顺便说一下,我假设你只是以此为例。否则,使用NSPasteboard
会更简单。