objective-c – 使用响应从cocoa(obj.c)执行shell脚本

objective-c – 使用响应从cocoa(obj.c)执行shell脚本,第1张

概述我有类似的东西: - (NSString *)unixSinglePathCommandWithReturn:(NSString *)command{NSPipe *newPipe = [NSPipe pipe];NSFileHandle *readHandle = [newPipe fileHandleForReading];NSTask *unixTask = [[NSTask al 我有类似的东西:

- (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;}

但它没有按预期工作.我点击按钮时调用它.如果我删除’waitUntilExit’的行,它按预期工作,但只有一次.当它在那里时,它不起作用.
我还尝试了一些基本的命令,比如’ls”Ping -c1 Google.com’和类似的东西,但我无法以某种方式让它工作.如果你有一些不同的方法在cocoa中运行shell脚本并收到响应,那么现在就让我吧.谢谢你们 :)

解决方法 嘿,库科斯克.在运行NSTask时,有关于NSV()问题的 CocoaDev评论.修复是在启动任务之前为stdin设置管道:

[task setStandardinput:[NSPipe pipe]];

如果您仅依靠NSLog()检查任务是否已运行,则可能会解决您的问题.或者,您可以尝试在GUI中显示输出,而不是使用NSLog().

总结

以上是内存溢出为你收集整理的objective-c – 使用响应从cocoa(obj.c)执行shell脚本全部内容,希望文章能够帮你解决objective-c – 使用响应从cocoa(obj.c)执行shell脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1004292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存