2011-05-16 9 views
1

초보자인데 문제가 있습니다. "pbcopy"명령으로 NSTask를 사용하고 싶습니다. 나는 이것을 시도했지만 그것이 작동하지 않는 것 같습니다 :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]; 

답변

2

파이프 ("|")는 쉘의 기능이 아니라 사용중인 명령에 대한 인수입니다. 두 개의 NSTasks을 사용해야하는데, 하나는 반향 용이고 다른 하나는 pbcopy 용이고 NSPipe을 설정해야합니다.

Btw, 나는 이것을 예제로 사용하고 있다고 가정합니다. 그렇지 않으면 NSPasteboard을 사용하는 것이 훨씬 간단합니다.

+0

두 개의 NSTask를 시도했지만 NSException이 발생합니다. – Zandoo

+0

pbcopy는/bin이 아니라/usr/bin에 있습니다. – omz

+0

죄송합니다. 이제 정상적으로 작동합니다. 고맙습니다. – Zandoo

관련 문제