0

私は次の命令を実行しようとしていました、

 Process p = Runtime.getRuntime().exec("/system/bin/lsof|grep mediaserver");

android(java)では、エラーが発生します。次の命令を実行すると、

 Process p = Runtime.getRuntime().exec("/system/bin/lsof ");

ファイルは正常に保存されます。誰かがエラーが何であるかを知ることができますか?実際、メディアサーバーサービスが実行されているかどうかを一覧表示して確認したいと思います。

4

2 に答える 2

1

grepユーティリティがデバイスにインストールされていない可能性があります。

コンソールで次のことを試して確認できます。

> adb shell
$ grep
grep: not found

最後の行は、このコマンドが使用できないことを示しています。

于 2012-08-27T14:10:57.873 に答える
0

問題はRuntime.getRuntime().exec(...)、シェル言語の扱い方がわからないことです。Linux / Unix プラットフォームでは、次のようになります。

Process p = Runtime.getRuntime().exec(new String[]{
    "/bin/sh", "-c", "/system/bin/lsof | grep mediaserver"});

ただし、(どうやら) Android にはデフォルトでコマンド シェル/コマンド プロンプトがありません。したがって、適切なシェルを特定してデバイスにインストールするか、パイプラインを「手動で」構築する必要があります。つまり、「パイプ」ファイル記述子を作成し、2 つのコマンドを実行しlsofて、パイプへの書き込みとパイプからのgrep読み取りを行います。

たぶん答えは、このように実行することです...

Process p = Runtime.getRuntime().exec(
        "adb shell /system/bin/lsof | grep mediaserver");

(Java から実行する前に、adb から対話的に「シェル ....」部分を実行してみてください。)

于 2012-08-27T14:39:28.493 に答える