diff options
author | Max Bachmann <kontakt@maxbachmann.de> | 2023-02-24 12:38:21 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-24 12:38:21 (GMT) |
commit | 1fa38906f0b228e6b0a6baa89ab6316989b0388a (patch) | |
tree | 6b22b15ea33f2f31b5bcbbc0bb4011e087f3b3f0 /Modules | |
parent | 347f7406df62b2bbe551685d72a466f27b951f8e (diff) | |
download | cpython-1fa38906f0b228e6b0a6baa89ab6316989b0388a.zip cpython-1fa38906f0b228e6b0a6baa89ab6316989b0388a.tar.gz cpython-1fa38906f0b228e6b0a6baa89ab6316989b0388a.tar.bz2 |
gh-102141: replace use of getpid on Windows with GetCurrentProcessId (GH-102142)
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_randommodule.c | 4 | ||||
-rw-r--r-- | Modules/posixmodule.c | 15 |
2 files changed, 12 insertions, 7 deletions
diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c index 95f1e50..68060c0 100644 --- a/Modules/_randommodule.c +++ b/Modules/_randommodule.c @@ -259,7 +259,9 @@ random_seed_time_pid(RandomObject *self) key[0] = (uint32_t)(now & 0xffffffffU); key[1] = (uint32_t)(now >> 32); -#ifdef HAVE_GETPID +#ifdef MS_WINDOWS_NON_DESKTOP + key[2] = (uint32_t)GetCurrentProcessId(); +#elif defined(HAVE_GETPID) key[2] = (uint32_t)getpid(); #else key[2] = 0; diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 524dc7e..51aa89e 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -7946,7 +7946,7 @@ os_getgid_impl(PyObject *module) #endif /* HAVE_GETGID */ -#ifdef HAVE_GETPID +#if defined(HAVE_GETPID) /*[clinic input] os.getpid @@ -7957,9 +7957,13 @@ static PyObject * os_getpid_impl(PyObject *module) /*[clinic end generated code: output=9ea6fdac01ed2b3c input=5a9a00f0ab68aa00]*/ { +#ifdef MS_WINDOWS_NON_DESKTOP + return PyLong_FromUnsignedLong(GetCurrentProcessId()); +#else return PyLong_FromPid(getpid()); +#endif } -#endif /* HAVE_GETPID */ +#endif /* defined(HAVE_GETPID) */ #ifdef NGROUPS_MAX #define MAX_GROUPS NGROUPS_MAX @@ -8265,12 +8269,11 @@ static PyObject* win32_getppid() { HANDLE snapshot; - pid_t mypid; PyObject* result = NULL; BOOL have_record; PROCESSENTRY32 pe; - mypid = getpid(); /* This function never fails */ + DWORD mypid = GetCurrentProcessId(); /* This function never fails */ snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (snapshot == INVALID_HANDLE_VALUE) @@ -8279,9 +8282,9 @@ win32_getppid() pe.dwSize = sizeof(pe); have_record = Process32First(snapshot, &pe); while (have_record) { - if (mypid == (pid_t)pe.th32ProcessID) { + if (mypid == pe.th32ProcessID) { /* We could cache the ulong value in a static variable. */ - result = PyLong_FromPid((pid_t)pe.th32ParentProcessID); + result = PyLong_FromUnsignedLong(pe.th32ParentProcessID); break; } |