コード例 #1
0
def mount_fuse(mount_point):
    rfd, sfd = socketpair(AF_UNIX, SOCK_STREAM)
    newenv = os.environ.copy()

    if not os.fork():
        os.environ['_FUSE_COMMFD'] = str(sfd)
        for i in xrange(3, 1024):
            if i != sfd:
                try:
                    os.close(i)
                except OSError:
                    pass
                os.execl('/usr/bin/fusermount', 'fusermount', mount_point)
    else:
        #s = socket.fromfd(rfd, AF_UNIX, SOCK_STREAM)
        message, flags, ancillary = recvmsg(rfd)
        level, type, fd = ancillary[0]
        return unpack('=i', fd)[0]
コード例 #2
0
ファイル: test-socketpair.py プロジェクト: mikukkon/eunuchs
import socket, os, errno

from eunuchs.socketpair import socketpair

# set things up so the fds we get are deterministic
for fd in xrange(3,100):
    try:
        os.close(fd)
    except OSError, e:
        if e.errno == errno.EBADF:
            # wasn't open
            pass
        else:
            raise

a,b = socketpair()
assert a == 3
assert b == 4

a,b = socketpair()
assert a == 5
assert b == 6

a,b = socketpair(socket.AF_UNIX)
assert a == 7
assert b == 8

a,b = socketpair(socket.AF_UNIX, socket.SOCK_STREAM)
assert a == 9
assert b == 10