BlackJack hat geschrieben:@Alfons Mittelmeyer: Wenn man alles gleich macht dann gibt's irgendwie keine unterschiedlichen Betriebssysteme.
Ja warum wird dann nichts unahängiges gemacht? Genau das würde man brauchen, aber auch für Windows
os.mkfifo(path[, mode])
Create a FIFO (a named pipe) named path with numeric mode mode. The default mode is 0666 (octal). The current umask value is first masked out from the mode.
Availability: Unix.
FIFOs are pipes that can be accessed like regular files. FIFOs exist until they are deleted (for example with os.unlink()). Generally, FIFOs are used as rendezvous between “client” and “server” type processes: the server opens the FIFO for reading, and the client opens it for writing. Note that mkfifo() doesn’t open the FIFO — it just creates the rendezvous point.
Quelle:
https://docs.python.org/2/library/os.html
Und so etwas ist grauenhaft. Würde ich nicht ernsthaft implementieren:
Code: Alles auswählen
import os
pipe_write=open("pipe_read",'w')
while True:
a = input(">")
pipe_write.write(a)
pipe_write.flush()
Code: Alles auswählen
import os
pipe_read=open("pipe_read",'r')
while True:
a = pipe_read.read()
if len(a) != 0: print(a)
Hatte es mit readline probiert, aber das wartet auch nicht. Naja, den File vollmüllen ist ja so eine Art Logfile, oder?
Das wären dann zwei verschiedene Anwendungen.
Man könnte es natürlich auch mit zwei Files machen. Die Anwendung, die liest, liest den File und löscht ihn danach. Die Anwendung, die schreibt, schreibt in einen anderen File und wenn der este gelöscht ist, schließt sie ihn, benennt in um und öffnet dann wieder einen zum Schreiben.
Das wären dann vier Files für eine beidseitige Kommunikation. Gefällt mir auch nicht besonders. Aber JSON könnte man dabei verwenden. Wenn drei Anwendungen über eine vierte miteinander kommunizieren, wären das 12 Files. Da wäre dann eher TCP/IP zu überlegen.
JSON über TCP/IP zu anderen Anwendungen, gibt es hierfür etwas?
httplib geht über http Server. Gibt es auch etwas anderes zur Kommunikation auf demselben System?
Man könnte ja über localhost gehen:
https://docs.python.org/3/library/socketserver.html