Question

Je suis débutant et j'ai un problème.Je souhaite utiliser NSTask avec la commande "pbcopy".J'ai essayé ceci mais il semble que cela ne fonctionne pas :

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];

Des idées ?Merci.


Ça fonctionne bien :

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];
Était-ce utile?

La solution

Le tube ("|") est une fonctionnalité du shell, pas un argument de la commande que vous utilisez.Il faut en utiliser deux NSTasks, un pour echo et un pour pbcopy et configurez un NSPipe entre eux.

Au fait, je suppose que vous utilisez ceci comme exemple.Sinon, ce serait beaucoup plus simple à utiliser NSPasteboard pour ça.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top