如何在目标c中正确编写终端命令

时间:2016-03-07 09:18:10

标签: objective-c terminal

我必须运行命令来终止进程,命令是kill pgrep -f /dev,我知道运行命令NSTask是用的 但是如何用这些特殊参数运行上面的命令,而pgrep -f / dev在``中 我试过这段代码

NSTask *task = [[NSTask alloc]init];
 [task setLaunchPath:@"/bin/kill"];
 [task setArguments:@[@"`",@"pgrep",@"-f",@"/dev",@"`" ];
 [task launch];

请告诉我如何写得正确,我知道我的论据错了。 谢谢, 任何帮助将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

您的问题似乎在于误解了命令行的处理方式。当您键入行时:

FROM Artists JOIN albums USING (ar_id)

您正在键入 shell ,可能是kill `pgrep -f /dev` 但可能是bash等。后引号(`)是shell功能; shell将安排运行两个命令并获取tcsh的输出并将其作为参数传递给pgrep

在您的代码中,您尝试执行kill并将其作为参数传递给后面引用的kill命令。这不会起作用,pgrep对后引号一无所知,这是一个shell特征......

因此,请阅读shell文档(kill),您会发现可以将shell命令行作为单个参数传递给shell命令本身 - 您可以自己在终端中尝试它。想通了,你可以使用你的man sh代码运行shell,并将命令行传递给它。

HTH