4

C++アプリケーションに外付けドライブをマウントしようとしています。私はもともとmount(2)を使おうとしましたが、これは失敗します:

int ret = mount(deviceName.c_str(), mountPoint.c_str(), fsType.c_str(), 0, NULL);

errnoは19ですENODEV(ファイルシステムタイプはカーネルで構成されていません)

ただし、mount(8)の使用に切り替えると、正常に機能します。

std::string cmd = "mount -t " + fsType + " " + deviceName + " " + mountPoint;
int ret = system(cmd.c_str());

mount(2)には、受け入れ可能なファイルシステムタイプの異なるリストがありますか?これはntfsデバイスなのでntfs-3g、fstypeとして使用していました。/ proc / filesystemsをチェックしたところ、これがリストされていないことがわかったので、試してみfuseblkましたが、エラーが22に変更されましたEINVAL

mount(2)を使用してNTFSデバイスをマウントする正しい方法は何ですか?

4

2 に答える 2

4

mount.2は単なるカーネル呼び出しです。mount.8カーネルの機能を超えて拡張された完全な外部ツールです。

によって行われるマウント マジック全体を実装するライブラリであるlibmountを探しているのではないかと思いますmount.8。新しいマウント バージョンも同様に使用します。util-linuxで提供されています。

于 2012-09-06T13:36:57.410 に答える