4

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];
4

1 に答える 1

0

解決しました!ライオン バージョンの xcode 4.3.2 にアップグレードした後、シミュレーターがクラッシュしたexc_bad_accessため、ゾンビを有効にしましたが [nstaskvar release]; [outputPipe release];、問題の原因は最後の 2 行であることがわかりました。

私はそれらの両方を無効にしましたが、それはなくなり、今では私のiPhoneでうまく機能しています:D.

于 2012-04-04T21:17:33.513 に答える