我在我的 Cocoa 应用程序中运行一个简单的 grep 命令,如下所示:
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/grep"];
NSArray *arguments;
arguments = [NSArray arrayWithObjects: @"foo", @"bar.txt", nil];
[task setArguments: arguments];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *string;
string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog (@"grep returned:\n%@", string);
[string release];
[task release];
但是,我有点想知道通过终端输入的命令是如何使用这种技术运行的,这些命令不会给出输出并且不会立即执行,除非以Control+之类的方式退出。C就像java -jar server.jar
在一直运行的地方运行,直到退出会话。一旦命令启动,我将如何做这样的事情,即会话不会自动结束?
我只需要注释掉它发布的部分NSTask
吗?任何建议都会很好!