Windows에는 waitFor.exe 명령은 배치 및 powershell (및 실행 파일을 호출 할 수있는 다른 언어)에서 사용할 수 있으므로 시스템에서 신호를 보내거나 기다릴 수 있으므로 네트워크에서 실행 동기화가 가능합니다. 단일 컴퓨터.
그것은 매우 유용하지만 좋은 문서가 없기 때문에 타임 아웃 옵션을 사용하여 배치 파일에 일시 중지를 삽입하는 것이 주로 남용됩니다.
내가 찾을 수있는 유일한 문서는 다음과 같습니다. https://technet.microsoft.com/en-us/library/cc731613(v=ws.11).aspx , 특정 용도에 대한 매우 기본적인 사용법 사용법을 제공합니다. waitFor.exe 명령을 사용하지만 실제로 구현되는 방법이나 특정 네트워크에서 작동하는지 (예 : 일부 방화벽에 의해 차단되지 않음) 어떻게 보장하는지에 대해서는 아무것도 제공하지 않습니다.
나는 자신의 코드에서 이러한 신호를 전송하고 수신 할 수있게하고 싶지만 그렇게하는 방법을 찾을 수는 없다. 심지어 가장 기본적인 프로토콜과 패킷 형식조차도 사용 가능하지 않다.
내 질문들,
- 어떤 네트워크 프로토콜이이 용도로 사용됩니까? (@Seth 언급했듯이, 그것은 아마 RPC입니다 - 그렇다면 어떻게 구현됩니까?)
- 사용 된 패킷 형식은 무엇입니까?
- 이 신호를 라우팅하는 데 필요한 네트워크 포트는 무엇입니까?
다른 말로하면, 나는 내 자신의 프로그램에서 이것을 구현하는 데 필요한 모든 것을 알아야한다.
시간 내 줘서 고마워!
예제에서 알 수 있듯이 신호는 단순한 문자열로 보입니다. 아마도 임의의 문자열을 보낼 수 있습니다. 일반적으로 Windows는 이러한 함수에 대한 RPC 호출을 사용합니다.
—
Seth
@eryksun을 찾았습니다. 2014 SO 댓글 : waitfor.exe는 다음을 기반으로합니다. 메일 슬롯 .
—
fsteff
waitfor someevent
메일 슬롯을 만듭니다. \\.\mailslot\WAITFOR.EXE\someevent
. 신호를 통해 보내기 waitfor /si someevent
에 대한 핸들을 엽니 다. \\*\mailslot\WAITFOR.EXE\someevent
여기서 "*"는 UNC 공급자가 도메인의 모든 컴퓨터에 메시지를 브로드 캐스트합니다. waitfor /s %COMPUTERNAME% /si someevent
구체적으로 opens \\[computer_name]\mailslot\WAITFOR.EXE\someevent
신호를 방송하는 대신에