Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mailslot

2 réponses
Avatar
Méta-MCI \(MVP\)
Bonjour !

Mailslot étant revenu à la mode dans Vista, par la présence de
l'utilitaire WaitFor.exe, j'ai voulu l'utiliser avec Python.

Or, ce code ne fonctionne pas :

f=open("\\\\.\\mailslot\\waitfor.exe\\ALERTTEST","wb")
f.writeline("ABC")
f.close()

Traceback (most recent call last):
File "<string>", line 227, in run_nodebug
File "D:\Dev\python\waitfor-send.py", line 1, in <module>
f=open("\\\\.\\mailslot\\waitfor.exe\\ALERTTEST","wb")
IOError: [Errno 2] No such file or directory:
'\\\\.\\mailslot\\waitfor.exe\\ALERTTEST'


Alors que le code suivant fonctionne sans problème :

import win32com.client
mailslot =
win32com.client.Dispatch('Scripting.FileSystemObject').CreateTextFile('\\\\.\\mailslot\\waitfor.exe\\ALERTTEST')
mailslot.WriteLine("ABC")
mailslot.close()


Quelqu'un pourrait-il m'expliquer pourquoi Python ne peut pas ouvrir un
fichier mailslot de façon normale ?


@-salutations

Michel Claveau

2 réponses

Avatar
Méta-MCI \(MVP\)
Re !

Pour info, le code suivant fonctionne aussi :

import win32file,win32con
mailslot =
win32file.CreateFile(r'.mailslotwaitfor.exeALERTTEST',
win32file.GENERIC_WRITE, 0, None, win32con.CREATE_NEW, 0, None)
win32file.WriteFile(mailslot, "ABC")
mailslot.Close()

Sinon, petite précision, MailSlot est un IPC (Inter Processus Call), qui
permet de faire communiquer des processus différents (par exemple, deux
instances de Python, deux batchs, un batch et un Python, etc.) Mailslot
ne crée pas de vrai fichier, mais un pseudo-fichier avec UDP et SMB. Du
coup, ça fonctionne aussi en réseau local, ce qui devient encore plus
intéressant.

@+

Michel Claveau
Avatar
Laurent Pointal
Le Sat, 08 Dec 2007 17:09:09 +0100, Méta-MCI (MVP) a écrit :

Re !

Pour info, le code suivant fonctionne aussi :

import win32file,win32con
mailslot > win32file.CreateFile(r'.mailslotwaitfor.exeALERTTEST',
win32file.GENERIC_WRITE, 0, None, win32con.CREATE_NEW, 0, None)
win32file.WriteFile(mailslot, "ABC")
mailslot.Close()

Sinon, petite précision, MailSlot est un IPC (Inter Processus Call), qui
permet de faire communiquer des processus différents (par exemple, deux
instances de Python, deux batchs, un batch et un Python, etc.) Mailslot
ne crée pas de vrai fichier, mais un pseudo-fichier avec UDP et SMB. Du
coup, ça fonctionne aussi en réseau local, ce qui devient encore plus
intéressant.

@+

Michel Claveau


Ah, merci. Je savais (vieux cours sur Win32) qu'il existait un truc comme
ça, mais en recherchant dans les docs de l'API vers les mutex, sémaphores
et threads, ils n'apparaissaient pas et je ne me souvenais pas quel nom
ça avait (franchement, 'mail').

Ca va peut-être intéresser quelqu'un... je transmet.



--
Laurent POINTAL -