Windows ha un waitFor.exe comando disponibile per l'uso in batch e powershell (e qualsiasi altro linguaggio che possa chiamare un eseguibile), che consente di inviare o attendere un segnale su un sistema, consentendo così la sincronizzazione dell'esecuzione attraverso una rete - sebbene funzioni bene anche su un computer singolo.
È molto utilizzabile, ma a causa della mancanza di una buona documentazione è per lo più abusato inserire una pausa nei file batch usando l'opzione di timeout.
L'unica documentazione che riesco a trovare è questa: https://technet.microsoft.com/en-us/library/cc731613(v=ws.11).aspx , che fornisce un utilizzo di utilizzo molto semplice per lo specifico waitFor.exe comando in Windows - ma non offre nulla su come è effettivamente implementato, né su come garantisco che funzioni (== non è bloccato da qualche firewall) in una data rete.
Mi piacerebbe essere in grado di incorporare l'invio e la ricezione di questi segnali nel mio codice, ma non riesco a trovare nulla su come farlo - nemmeno il più semplice protocollo e formato di pacchetto sembra disponibile.
Le mie domande,
- Quale protocollo di rete viene utilizzato per questo? (Come menzionato da @Seth, probabilmente è RPC - ma poi, come viene implementato?)
- Qual è il formato del pacchetto utilizzato?
- Quali porte di rete sono necessarie per instradare questi segnali?
In altre parole, ho bisogno di sapere tutto il necessario per implementarlo nei miei programmi.
Grazie per il tuo tempo!
waitfor someevent
crea un mailslot chiamato \\.\mailslot\WAITFOR.EXE\someevent
. Invio del segnale tramite waitfor /si someevent
apre una maniglia per \\*\mailslot\WAITFOR.EXE\someevent
, dove "*" ha il provider UNC che trasmette il messaggio a tutti i computer del dominio. waitfor /s %COMPUTERNAME% /si someevent
specificamente opens \\[computer_name]\mailslot\WAITFOR.EXE\someevent
invece di trasmettere il segnale.