相关疑难解决方法(0)

我可以将文件描述符共享给Linux上的另一个进程,还是它们是进程的本地进程?

假设我有2个进程,ProcessA和ProcessB.如果我int fd=open(somefile)在ProcessA中执行,那么我可以将文件描述符的值fd通过IPC传递给ProcessB并让它操作同一个文件吗?

c linux

50
推荐指数
3
解决办法
3万
查看次数

找到Linux套接字的原始拥有进程

在Linux和其他类UNIX操作系统,它是可能的两个(或多个)进程共享一个互联网插座.假设进程之间没有父子关系,有没有办法告诉最初创建套接字的进程是什么?

澄清:我需要使用/proc文件系统或类似工具从"外部"确定这一点.我无法修改进程的代码.我已经可以通过阅读告诉哪些进程正在共享套接字/proc/<pid>/fd,但这并不能告诉我最初创建它们的进程.

c sockets linux

16
推荐指数
3
解决办法
3万
查看次数

将套接字对象发送到分叉运行进程(multiprocessing.Queue)

我正在学习使用HTML5 WebSockets,作为其中的一部分,我正在用Python编写服务器,所以我可以知道它们如何工作的细节.我前几天创建了一个非常好的,但是我想扩展它以便它支持多个端点,每个端点都是一个可以处理websocket客户端的不同"服务".

目前,我的实现适用于产生进程等(我使用多处理而不是线程,因为我读到线程在CPython中并不是真正的多线程,这就是我认为我正在使用的(Ubuntu 12.04上的默认安装)),但是我无法将收到的客户端套接字发送到服务进程.

这是我发送它们的方式(这是循环运行):

try:
    #get a new client
    conn, addr = server.accept()
    print "Client connected from", addr
    request = conn.recv(4096)
    response, close, service = self.handshake(request)
    conn.send(response)
    if close:
        print "Invalid request from", addr
        conn.close()
        continue
    client = WebSockets.WebSocketClient(conn, addr)
    service.clientConnQueue.put(client)
Run Code Online (Sandbox Code Playgroud)

'server'是一个侦听传入连接的套接字.握手方法负责验证其请求并确定将客户端放入哪个服务进程.'response'是要发送的http响应,如果出现错误,'close'为True,'service'是继承自multiprocessing.Queue的类.WebSocktes.WebSocketClient是存储我的发送和接收实现的地方,它基本上用作套接字的包装器.

'clientConnQueue'的创建方式如下:

class Service(multiprocessing.Process):
    """Base class for all services."""
    def __init__(self, manager):
        multiprocessing.Process.__init__(self)
        self.manager = manager
        self.clientConnQueue = self.manager.Queue()
        self.shutdownFlag = multiprocessing.Event()
Run Code Online (Sandbox Code Playgroud)

manager是一个multiprocessing.Manager()

我尝试将客户端放在clientConnQueue中时得到的错误如下:

File "./WebSocketServer.py", line 183, in <module>
main()
File "./WebSocketServer.py", line 180, in main
server.runServer() …
Run Code Online (Sandbox Code Playgroud)

python sockets queue multiprocessing

6
推荐指数
1
解决办法
3501
查看次数

标签 统计

c ×2

linux ×2

sockets ×2

multiprocessing ×1

python ×1

queue ×1