你有理由要求它通过 来完成mount(2)
吗?
AppleNetFSMountURLSync()
从 NetFS 框架中提供了挂载网络文件系统的功能。可悲的是,唯一的文档是头文件,所以我无法链接到它,但这是相关的声明:
/*
* Given a URL that refers to a file server, connect to that server
* and mount stuff.
*
* If the URL just specifies a server and you can't just mount the
* "root directory" of the server, the user will be prompted with
* a window to let them select one or more items to mount from that
* server, otherwise whatever item the URL specifies to mount will
* be mounted.
*
* If the mountpath is provided it will be used as the mount point.
* If the mountpath is set to NULL, a default mount point will be used.
*
* If the user and passwd are set, they will override any user name
* or password that may be set in the URL. These calls go through the NetAuth agent.
* If the URL doesn't specify a password, and one is needed, the
* user will be prompted with a window requesting password.
*
* Options can be provided for the session open and the mount itself.
* If the mount is successful, the POSIX path to each mountpoint is
* returned as a CFStringRef in mountpoints.
*
* If the return value is zero the mount has succeeded.
*
* A positive non-zero return value represents an errno value
* (see /usr/include/sys/errno.h). For instance, a missing mountpoint
* error will be returned as ENOENT (2).
*
* A negative non-zero return value represents an OSStatus error.
* For instance, error -128 is userCanceledErr, returned when a mount
* operation is canceled by the user. These OSStatus errors are
* extended to include:
*
* from this header:
* ENETFSPWDNEEDSCHANGE -5045
* ENETFSPWDPOLICY -5046
* ENETFSACCOUNTRESTRICTED -5999
* ENETFSNOSHARESAVAIL -5998
* ENETFSNOAUTHMECHSUPP -5997
* ENETFSNOPROTOVERSSUPP -5996
*
* from <NetAuth/NetAuthErrors.h>
* kNetAuthErrorInternal -6600
* kNetAuthErrorMountFailed -6602
* kNetAuthErrorNoSharesAvailable -6003
* kNetAuthErrorGuestNotSupported -6004
* kNetAuthErrorAlreadyClosed -6005
*
*/
int
NetFSMountURLSync(
CFURLRef url, // URL to mount, e.g. nfs://server/path
CFURLRef mountpath, // Path for the mountpoint
CFStringRef user, // Auth user name (overrides URL)
CFStringRef passwd, // Auth password (overrides URL)
CFMutableDictionaryRef open_options, // Options for session open (see below)
CFMutableDictionaryRef mount_options, // Options for mounting (see below)
CFArrayRef *mountpoints) // Array of mountpoints
__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_NA);
如果对您的用例有用,还有一个异步版本。
如this answerkNetFSMountAtMountDirKey
所示,如果要指定挂载点,则需要使用该选项。