0

Linux のマウントポイント コマンドに似た関数またはシステム コールが必要でした。
(このコマンドは、指定されたディレクトリがマウント ポイントであるかどうかを確認します)

4

3 に答える 3

6

私はそれを行う実際のシステムコールを知りませんが、あなたができることはあなたがチェックしたいディレクトリとその親のデバイス番号を比較することです。それはで行うことができますstat。サンプルコード(エラーチェックは省略):

#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

int main(void) {
  struct stat mp, mp_parent;
  stat("/boot", &mp);
  stat("/boot/..", &mp_parent);

  if (mp.st_dev != mp_parent.st_dev)
    printf("/boot is a mount point.\n");
  else
    printf("/boot is not a mount point.\n");

  return 0;
}
于 2012-05-02T09:03:19.647 に答える
1

このような機能の必要性は、通常(常にではありませんが)、システムの抽象化を採用していないことを示す危険信号です...そして、何をしているのかを再考する必要があります。何かがマウントポイントであるかどうかに基づいてソフトウェアで選択している場合は、その代替動作をスクリプトで制御できるパラメーターにすることを検討してください。人々は、ネイティブのmountpointコマンドなどを使用して、その動作を採用するようにプログラムをパラメーター化できます。

その免責事項はさておき、ここに実装がありmountpoint.cます:

https://fossies.org/linux/sysvinit/src/mountpoint.c

...および「ファイルのタイプのテスト」に関するリファレンス

http://www.aquaphoenix.com/ref/gnu_c_library/libc_160.html

于 2012-05-02T09:03:37.423 に答える
0

解析する独自のアプリを作成します/proc/mounts。次に、パスと からのパスを比較します/proc/mounts。それらが等しい場合、パスはマウント ポイントです。

于 2013-12-06T14:58:13.643 に答える