mobileterminal、ifile、myfile、cydia、alertscriptなどのアイコンが付いたGUIアプリからdpkg(または/binまたは/usr / binディレクトリにあるcydiaのその他のバイナリライブラリファイル)を実行したいと思います。彼らはどのようにライブラリにアクセスしますか?このコードは機能し、プロセスのstdoutはnslogに出力されますが、すぐにセグメンテーション違反でクラッシュします。11.これは私のviewdidload関数にあります。これはシミュレーターでは発生しません。私のiPhone4だけが発生します。奇妙です。モバイルとルートの両方で実行してみました。アプリは/Applicationsフォルダーの下にあります。これが私のコードです。
編集:私はxcodeのユキヒョウバージョンを使用していて、ライオンに更新したばかりですが、それはおそらく問題ではないと思いますか?私のiPhoneはios5.0.1です。私がそれをテストするときに投稿します。
NSString * workingdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSTask * nstaskvar=[NSTask new];//note the NSTask.h file included!
NSPipe * outputPipe = [NSPipe pipe];
[nstaskvar setLaunchPath:@"/bin/ls"];
[nstaskvar setArguments:[NSArray arrayWithObjects:@"/usr",nil]];
[nstaskvar setCurrentDirectoryPath:workingdir];
[nstaskvar setStandardOutput:outputPipe];
[nstaskvar setStandardInput:[NSPipe pipe]];
[nstaskvar launch];
NSString * outputstring = [[[NSString alloc] initWithData:[[outputPipe fileHandleForReading] readDataToEndOfFile] encoding:NSUTF8StringEncoding] autorelease];//readDataToEndOfFile reads until file is closed, which happens when process exits :) (i couldnt get waitUntilExit to work)
NSLog(@"%@", outputstring);
[nstaskvar release];
[outputPipe release];