我需要運行.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