Frage

Ich implementiere ein Python -Skript, um das Fuse Mount programmatisch zu fördern. Ich habe ein Äquivalent in C geschrieben, indem ich Socketpair- und Recvmsg -APIs verwendet habe. Aber in Python Recvmsg wird nicht implementiert, also stecke ich fest. Kann mir jemand von Ihnen ein Pythonäquivalent davon erzählen? Jede Hilfe wäre geschätzt.

Lassen Sie mich sagen, warum ich recvmsg benötige, ich muss die FD des Sicherungsmontage vom Kind an den Elternteil senden.

War es hilfreich?

Lösung

Was Sie sich ansehen könnten, ist die Verwendung von Pyx- oder C -Modul für Python, das die erforderliche Funktionalität in C implementiert, und Sie können sie dann aus Ihrem Python -Skript aus manipulieren und verwenden. Auf diese Weise können Sie den Dateideskriptor senden und das Python -Skript darauf handeln lassen.

Andere Dinge, die Sie tun können, ist eine kleine C -Wrapper zu schreiben, die die RecvMsg behandelt und erst bis es diese FD erhält und geöffnet hat, macht es eine Gabel. Alle offenen Dateideskriptoren bleiben offen, wenn Sie eine Gabelung haben, und dann führen Sie dann aus oder sogar einfach alter Exec, was bedeutet, dass Sie sich keine Sorgen darüber machen müssen, dass Python es empfängt.

Andere Tipps

Als Teil von Python3 Socket.Recvmsg ist jetzt in der erhältlich socket Modul, das nach den Dokumenten es Ihnen ermöglichen sollte, das zu tun, was Sie wollen (wenn auch ziemlich spät!):

In einigen Systemen können SendMsg () und Recvmsg () verwendet werden, um Dateideskriptoren zwischen den Prozessen über einen AF_unix -Socket zu übergeben. Wenn diese Einrichtung verwendet wird (sie ist häufig auf Sock_stream -Sockeln beschränkt), wird recvmsg () in seinen zusätzlichen Daten, Elemente des Formulars (Socket.sol_Socket, Socket.scm_Rights, FDS) zurückgegeben, wobei FDS ein Bytes -Objekt ist, das das ausdrückt, das die der der die die die der der vom Neue Dateideskriptoren als binäres Array des nativen C -Int -Typs. Wenn recvmsg () nach Rückgabe des Systemaufrufs eine Ausnahme hervorruft, wird zunächst versucht, alle über diesen Mechanismus empfangenen Dateideskriptoren zu schließen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top