Domanda

I sono l'attuazione di uno script python per fare fusibile montare programatically. Ho scritto un equivalente in C, facendo uso di socketpair e recvmsg API. Ma in Python recvmsg non è implementata, così mi sono bloccato. qualcuno di voi mi può dire un pitone equivalente di questo? Qualsiasi aiuto sarebbe apprezzato.

Lasciate che vi dica perché ho bisogno di recvmsg, ho bisogno di inviare la fd del fusibile di montaggio dal bambino al genitore.

È stato utile?

Soluzione

Cosa si poteva guardare sta usando pisside o un modulo C per Python che implementa la funzionalità richiesta in C e poi si può manipolare e utilizzare o dal vostro script Python. Ciò consentirebbe di inviare il descrittore di file e hanno l'atto script Python su di esso.

Altre cose che potete fare è scrivere un piccolo involucro di C, che gestisce il recvmsg e non fino a quando non ottiene quel fd ed ha aperto lo fa fare una forchetta. Tutti i descrittori di file che sono aperti rimarrà aperto quando si forchetta, e poi exec o anche semplicemente un vecchio exec significa che non dovete preoccuparvi di Python che lo riceve.

Altri suggerimenti

Come parte del python3 socket.recvmsg è ora disponibile nel modulo socket che, secondo la documentazione, dovrebbe consentire di fare ciò che si vuole (anche se un po 'tardi!):

Su alcuni sistemi, sendmsg () e recvmsg () può essere utilizzato per passare il file descrittori tra processi oltre una presa AF_UNIX. Quando questo impianto viene utilizzato (è spesso limitato a socket SOCK_STREAM), recvmsg () restituirà, nei suoi dati ausiliari, gli elementi della forma (Socket.SOL_SOCKET, socket.SCM_RIGHTS, FDS), dove FDS è un byte oggetto rappresenti i nuovi descrittori di file come un array binario del nativo di tipo C int. Se recvmsg () solleva un'eccezione dopo che il sistema chiamata restituisce, in primo luogo tentare di chiudere i descrittori di file ricevuto tramite questo meccanismo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top