/
/
opt
/
golang
/
1.22.0
/
src
/
runtime
/
testdata
/
testwinlibsignal
Server: in-mum-web1112.main-hosting.eu (62.72.28.111)
You: 216.73.216.60
PHP 8.3.16
Dir:
/opt/golang/1.22.0/src/runtime/testdata/testwinlibsignal
Edit:
/opt/golang/1.22.0/src/runtime/testdata/testwinlibsignal/main.c
#include <windows.h> #include <stdio.h> HANDLE waitForCtrlBreakEvent; BOOL WINAPI CtrlHandler(DWORD fdwCtrlType) { switch (fdwCtrlType) { case CTRL_BREAK_EVENT: SetEvent(waitForCtrlBreakEvent); return TRUE; default: return FALSE; } } int main(void) { waitForCtrlBreakEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if (!waitForCtrlBreakEvent) { fprintf(stderr, "ERROR: Could not create event\n"); return 1; } if (!SetConsoleCtrlHandler(CtrlHandler, TRUE)) { fprintf(stderr, "ERROR: Could not set control handler\n"); return 1; } // The library must be loaded after the SetConsoleCtrlHandler call // so that the library handler registers after the main program. // This way the library handler gets called first. HMODULE dummyDll = LoadLibrary("dummy.dll"); if (!dummyDll) { fprintf(stderr, "ERROR: Could not load dummy.dll\n"); return 1; } // Call the Dummy function so that Go initialization completes, since // all cgo entry points call out to _cgo_wait_runtime_init_done. if (((int(*)(void))GetProcAddress(dummyDll, "Dummy"))() != 42) { fprintf(stderr, "ERROR: Dummy function did not return 42\n"); return 1; } printf("ready\n"); fflush(stdout); if (WaitForSingleObject(waitForCtrlBreakEvent, 5000) != WAIT_OBJECT_0) { fprintf(stderr, "FAILURE: No signal received\n"); return 1; } return 0; }
Ukuran: 1.5 KB