Kuk*_*osk 4 macos bash shell cocoa objective-c
我有类似的东西:
- (NSString *)unixSinglePathCommandWithReturn:(NSString *)command
{
NSPipe *newPipe = [NSPipe pipe];
NSFileHandle *readHandle = [newPipe fileHandleForReading];
NSTask *unixTask = [[NSTask alloc] init];
[unixTask setStandardOutput:newPipe];
[unixTask setLaunchPath:@"/bin/sh"];
[unixTask setArguments:[NSArray arrayWithObjects:@"-c", command , nil]];
[unixTask launch];
[unixTask waitUntilExit];
NSString *output = [[NSString alloc] initWithData:[readHandle readDataToEndOfFile] encoding:NSUTF8StringEncoding];
return output;
}
Run Code Online (Sandbox Code Playgroud)
但它没有按预期工作.我点击按钮时调用它.如果我删除'waitUntilExit'的行,它按预期工作,但只有一次.当它在那里时,它不起作用.我还尝试了一些基本的命令,比如'ls''ping -c1 google.com'和类似的东西,但我无法以某种方式让它工作.如果你有一些不同的方法在cocoa中运行shell脚本并收到响应,那么现在就让我吧.谢谢你们 :)
小智 5
嘿,库科斯克.关于运行NSTask时的问题,CocoaDev有一个评论NSLog()
.修复是stdin
在启动任务之前设置管道:
[task setStandardInput:[NSPipe pipe]];
Run Code Online (Sandbox Code Playgroud)
如果您NSLog()
仅依靠检查任务是否已运行,则可能会解决您的问题.或者,您可以尝试output
在GUI中显示而不是使用NSLog()
.
归档时间: |
|
查看次数: |
2597 次 |
最近记录: |