0

cat /proc/mountsLinux 環境で実行した結果を解析しようとしています。

マウントにスペースなどの特殊文字が含まれている場合、それらはエスケープされます。これの例は

/home/user/media\040/image.dd /media/dd ... \040 は実際にはスペースです。

これをJavaで解析しようとしていますが、手動パーサーを書きたくありません。これはすでに行われており、私よりも確実に行われていると信じなければなりません。これをデコードするクラスはありますか? 1 つまたは 2 つの 8 進デコーダーを見つけましたが、それらはテキストと 8 進法が混在した状態では機能しません。

4

2 に答える 2

2

C で getmntent を使用して /proc/mounts を解析できます。

ルールに従って Java で実装できます。

スペース (\040)、タブ (\011)、改行 (\012)、バックスラッシュ (\134)

または none はスワップパーティションを意味します。

男取得:

mntent 構造体は、次のように定義されています。

       struct mntent {
           char *mnt_fsname;   /* name of mounted file system */
           char *mnt_dir;      /* file system path prefix */
           char *mnt_type;     /* mount type (see mntent.h) */
           char *mnt_opts;     /* mount options (see mntent.h) */
           int   mnt_freq;     /* dump frequency in days */
           int   mnt_passno;   /* pass number on parallel fsck */
       };

   Since  fields  in  the mtab and fstab files are separated by whitespace, octal escapes are
   used to represent the four characters space (\040), tab (\011), newline (\012)  and  back-
   slash  (\134) in those files when they occur in one of the four strings in a mntent struc-
   ture.  The routines addmntent() and getmntent() will convert from string representation to
   escaped representation and back.

別の方法: 「マウント」の結果を直接解析する。「on」、「type」などで分割する方が簡単かもしれません。

于 2012-11-27T02:45:18.953 に答える