1

我是初学者,我有一个问题。我想将 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];
4

1 回答 1

2

管道(“|”)是 shell 的一个特性,而不是您正在使用的命令的参数。您必须使用两个NSTasks,一个用于 echo,一个用于 pbcopy,并在它们之间设置一个NSPipe

顺便说一句,我假设您只是以此为例。否则使用它会简单得多NSPasteboard

于 2011-05-16T19:16:46.473 回答