在python中安装fuse会产生无效参数错误

2024-10-01 04:59:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了python代码到点挂载上的挂载引信。它总是给出无效参数错误。我用C语言试过同样的程序,效果很好。python的任何一位专家都可以帮助我找出问题所在,我已经将代码粘贴在这里。在

#!/usr/bin/python

import stat
import os
import ctypes
from ctypes.util import find_library

libc = ctypes.CDLL (find_library ("c"))

def fuse_mount_sys (mountpoint, fsname):
        fd = file.fileno (file ("/dev/fuse", 'w+'))
        if fd < 0:
                raise OSError("Could not open /dev/fuse")

        mnt_param = "%s,fd=%i,rootmode=%o,user_id=%i,group_id=%i" \
                        % ("allow_other,default_permissions,max_read=131072", \
                        fd, stat.S_IFDIR, os.getuid(), os.getgid())

        ret = libc.mount ("fuse", "/mount", "fuse", 0, mnt_param)
        if ret < 0:
                raise OSError("mount failed with code " + str(ret))
        return fd

fds = fuse_mount_sys ("/mount", "fuse")

装载语法为:

^{pr2}$

我试着用swig,用C语言编写程序,然后创建了一个。所以从它开始,它们就起作用了。但是我对用纯python写东西很感兴趣。提前谢谢。在

strace输出:

$ strace -s 100 -v -e mount python fuse-mount.py 
mount("fuse", "/mount", "fuse", 0, "allow_other,default_permissions,max_read=131072,fd=3,rootmode=40000,user_id=0,group_id=0") = -1 EINVAL (Invalid argument)


$ strace -s 100 -v -e mount ./a.out 
mount("fuse", "/mount", "fuse", 0, "allow_other,default_permissions,max_read=131072,fd=3,rootmode=40000,user_id=0,group_id=0") = 0

Tags: importiddefaultpermissionsosgroupctypesmax
1条回答
网友
1楼 · 发布于 2024-10-01 04:59:52

^{}不能用字符串初始化。相反,只需使用不带c_void_p的字符串。在

然后可以比较

strace -v -e mount python mymount.py

以及

^{pr2}$

直到他们匹配。在

另外,请确保在调用mount时文件句柄fd仍处于打开状态。file("/dev/fuse", 'w+')将被一些Python实现(包括cpython)自动垃圾收集和关闭。可以通过将file("/dev/fuse")的结果赋给变量来防止这种情况。在

相关问题 更多 >