Paiza.io kann auf das Netzwerk zugreifen und Dateien verarbeiten.
Das bedeutet, dass libtrusterd über Pythons ctypes ausgeführt werden kann!
Wie erwartet könnten wget-ähnliche Dinge leicht in Python implementiert werden.
context = ssl.create_default_context()
conn = http.client.HTTPSConnection(host, 443, context=context)
conn.request('GET',path)
res = conn.getresponse()
f = open(libname, "wb")
f.write(res.read())
f.close()
Auch https ist easy ™
Nun, es ist in Ordnung, wenn Sie dies sowie libtrusterd.so mitbringen.
@Phi, berühmt für tmlib.js, schrieb einen Python-Artikel Ich wusste es zum ersten Mal zu diesem Zeitpunkt, aber dank diesem Artikel Der beabsichtigte Pfad wurde erfolgreich zu LD_LIBRARY_PATH hinzugefügt.
os.environ["LD_LIBRARY_PATH"] = os.environ.get("LD_LIBRARY_PATH") + ":."
Aber es funktioniert immer noch nicht. ..
Es scheint, dass dlopen die Umgebungsvariablen nur betrachtet, wenn der Prozess gestartet wird.
Um die Sache noch schlimmer zu machen, gibt paiza.io zumindest beim Neustart des Prozesses keine Ergebnisse aus! Vielleicht gibt es eine Möglichkeit, mit untergeordneten Prozessen zu arbeiten, aber es mangelt an Python-Erfahrung Daher ist der Code, den ich geschrieben habe, NG. Wenn die Standardausgabe des untergeordneten Prozesses vom übergeordneten Prozess absorbiert wird Ich fühle mich wie ich gehen kann.
Sie können die gemeinsam genutzte Bibliothek so oft öffnen, wie Sie möchten, sie wird jedoch nach dem zweiten Mal nicht mehr geladen. Ich habe das Gefühl, dass es eine Beschreibung gab, was bedeutet, dass ich mich an die geöffnete Bibliothek erinnere.
Rufen Sie die gemeinsam genutzte Bibliothek, die angeblich im Voraus fehlt, mit ctypes.CDLL auf. Ich habe libtrusterd ausgeführt.
dummy = ctypes.CDLL("./libevent-2.0.so.5")
dummy = ctypes.CDLL("./libevent_core-2.0.so.5")
dummy = ctypes.CDLL("./libevent_openssl-2.0.so.5")
--LD_LIBRARY_PATH ist bereits zu spät bei dlopen, auch wenn es im Code neu geschrieben wird
Recommended Posts