我需要运行.sh文件并获取其输出。我还需要查看文件的设置。如何使用NSTask运行.sh文件并获取其输出?
.sh文件只是通过终端运行一个Java应用程序。
任何想法?我真的卡在这.....
利亚
的server.sh文件:
echo Starting Jarvis Program D.
ALICE_HOME=.
SERVLET_LIB=lib/servlet.jar
ALICE_LIB=lib/aliceserver.jar
JS_LIB=lib/js.jar
# Set SQL_LIB to the location of your database driver.
SQL_LIB=lib/mysql_comp.jar
# These are for Jetty; you will want to change these if you are using a different http server.
HTTP_SERVER_LIBS=lib/org.mortbay.jetty.jar
PROGRAMD_CLASSPATH=$SERVLET_LIB:$ALICE_LIB:$JS_LIB:$SQL_LIB:$HTTP_SERVER_LIBS
java -classpath $PROGRAMD_CLASSPATH -Xms64m -Xmx128m org.alicebot.server.net.AliceServer $1
我当前的代码:
NSTask *server = [NSTask new];
[server setLaunchPath:@"/bin/sh"];
[server setArguments:[NSArray arrayWithObject:@"/applications/jarvis/brain/server.sh"]];
NSPipe *outputPipe = [NSPipe pipe];
[server setStandardInput:[NSPipe pipe]];
[server setStandardOutput:outputPipe];
[server launch];
NSMutableString *outputString = [NSMutableString string];
while ([outputString rangeOfString:@"Jarvis>"].location == NSNotFound) {
[outputString appendString:[[[NSString alloc] initWithData:[[outputPipe fileHandleForReading] readDataToEndOfFile] encoding:NSUTF8StringEncoding] autorelease]];
NSRunAlertPanel(@"", outputString, @"", @"", @"");
}
的NSRunAlertPanel只是为检查输出。现在我的代码冻结了,甚至没有进入alertpanel。
是的。做了所有这些,它在.sh文件的开始处返回回声,但不是设置或最终程序。还有一个用户输入字段。 – objectiveccoder001 2010-08-20 13:15:59
你可以发布你的shell脚本的大纲吗? – sakra 2010-08-20 15:41:09
是的。我把它写在我的问题上。 – objectiveccoder001 2010-08-20 17:41:46