From bdd2b30976e0268b1397eaa16d8da9cd0929a49a Mon Sep 17 00:00:00 2001 From: Nick Logozzo Date: Fri, 3 Jan 2025 10:49:07 -0500 Subject: [PATCH] V2025.1.0-next (#56) * Version Bump * System - Fix `Process::kill()` on Windows * Update Changelog --- CHANGELOG.md | 9 ++++++ CMakeLists.txt | 2 +- Doxyfile | 4 +-- include/system/process.h | 1 + manual/README.md | 8 +++--- resources/libnick-r.png | Bin 12122 -> 11466 bytes resources/libnick-r.svg | 4 +-- resources/libnick.png | Bin 6820 -> 6340 bytes resources/libnick.svg | 4 +-- src/system/process.cpp | 58 +++++++++++++++++++++++++-------------- tests/processtests.cpp | 6 +--- tests/webtests.cpp | 6 ++++ 12 files changed, 65 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0010fef..90c1b24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 2025.1.0 (next) +### Breaking Changes +None +### New APIs +None +### Fixes +#### System +- Fixed an issue where `Process::kill()` did not work on Windows + ## 2024.12.1 ### Breaking Changes None diff --git a/CMakeLists.txt b/CMakeLists.txt index d5209da..8485b32 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ endif() set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") #libnick Definition -project ("libnick" LANGUAGES C CXX VERSION 2024.12.1 DESCRIPTION "A cross-platform base for native Nickvision applications.") +project ("libnick" LANGUAGES C CXX VERSION 2025.1.0 DESCRIPTION "A cross-platform base for native Nickvision applications.") include(CMakePackageConfigHelpers) include(GNUInstallDirs) include(CTest) diff --git a/Doxyfile b/Doxyfile index ae5193d..5efcd6d 100644 --- a/Doxyfile +++ b/Doxyfile @@ -48,7 +48,7 @@ PROJECT_NAME = "libnick" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "2024.12.1" +PROJECT_NUMBER = "2025.1.0" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -2416,7 +2416,7 @@ PERLMOD_MAKEVAR_PREFIX = # C-preprocessor directives found in the sources and include files. # The default value is: YES. -ENABLE_PREPROCESSING = YES +ENABLE_PREPROCESSING = NO # If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names # in the source code. If set to NO, only conditional compilation will be diff --git a/include/system/process.h b/include/system/process.h index d66f2af..fb4e43c 100644 --- a/include/system/process.h +++ b/include/system/process.h @@ -124,6 +124,7 @@ namespace Nickvision::System HANDLE m_read; HANDLE m_write; PROCESS_INFORMATION m_pi; + HANDLE m_job; #else int m_pipe[2]; pid_t m_pid; diff --git a/manual/README.md b/manual/README.md index 6de766d..874bdd2 100644 --- a/manual/README.md +++ b/manual/README.md @@ -6,14 +6,14 @@ libnick provides Nickvision apps with a common set of cross-platform APIs for managing system and desktop app functionality such as network management, taskbar icons, translations, app updates, and more. -## 2024.12.1 +## 2025.1.0 (next) ### Breaking Changes None ### New APIs -#### Network -- Added `Nickvision::Network::Socket` class -### Fixes None +### Fixes +#### System +- Fixed an issue where `Process::kill()` did not work on Windows ## Dependencies The following are a list of dependencies used by libnick. diff --git a/resources/libnick-r.png b/resources/libnick-r.png index 3336ec0b0deab68ed76bc5db95833b77150b725f..009472f99f0bd1c5ae8dfff54b5458f1e550059f 100644 GIT binary patch literal 11466 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 HIOzWYqWlk1 literal 12122 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 Dtg=HO diff --git a/resources/libnick-r.svg b/resources/libnick-r.svg index 6693c3c..9268c42 100644 --- a/resources/libnick-r.svg +++ b/resources/libnick-r.svg @@ -4,7 +4,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> - + @@ -24,4 +24,4 @@ y="0" /> - + \ No newline at end of file diff --git a/resources/libnick.png b/resources/libnick.png index 462c9310f7bedb8bf87e745036d6b76743e29714..fa8be5eca4e5e759aafc14fd97f7c7399ea1d169 100644 GIT binary patch literal 6340 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 literal 6820 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
oKz1GflO3 zCskzDFS?)9Y+%CV8E^YQn{3MGG1abcBr3aABSP~{-VDb5U{)Y!C1;oPVrkg<7zm)5 zMmkbSA{lt*;Jh|0rY(>RNQhnQ0x@JpKRYy)*3phm?dUB1Yc|YaGE3lCHV#X-y##PtS?-6WczOz}p+oNpy*lVUp_z~`MhD!Q zZpl$&XD%2P7LQK;Qxah>AQR8nNC)9X3Wlv8H&=#Mcx_QA_RW)oUkqQcAdt;ZJ za#REV|ckkfZFfq4_>aKU%z2MH)FSjkQ4^&lAmkFMo21- zRognZvr#*ehnhGfT!`gaKY^kF&DnY-mC+f33is5xf9cJ@f?xjIrmYi0)cD3J_VQ`) zk_+zAAr9$Y@RB{c5P9QSmU-DGRhLdLXXbg9Rv!}Z8yI1EhTC1)=@iWMm2oqI2kFK+K5{5ZZs(aJUXPVnn7 zEr~JLRn9@)r#}P7a|52Q7&E4O9oP%)HnobCU1N3@dBAZT4$1d^9Xfw7pYZ-n1~C1k z+?x*4l;fWg`tn=uI(y;%r?8%G6==GfxD?TedrU^Ym%->KCsF#3UQ8CJPAj&*(|Dei zAv@gnLn+H{98?kxvjYryZkDRa~*6%T-v9@QmxDFp4F$w z{0tE?I<{t7DQ8fUZm=(#?Cv%ZewW3N*Cy5Ykdp#zJAK!zn1?V<+ zLzKgtu2=VeV5;GObb z;krih$Yab+3mRYAWuY=w#n0p6@>^xEM|I)?5njg}ifdG|4gA8z{!Bh9!;dr!U3TaE zuzpgq!UW{fX1F3TH+SuF3VTBrY&djPB*iKKZ3~P(Uyn(wNyusKP4mq9nOHno>G)rIkd*C&MQhRFxwPU zNUuceiOT4=kdX>#T~U%6+5)`lx#ic&Nm%-$WOZ+y7|uN`kS_;C@;YjwU<7)s6OGw>w_Iz#D;qs#t?ffFXfFwiB<6P52MfCqOAk@J}BfDm#6-Jq+i26NomW*E%+v_P} zhZ=joz+qc89eIqTlXLvI-Eb`eFT!P!mgwVnq~lq+3kWF(V+1lY#Qi7l=+d;^-S7}OGzz3O&@AJ0R73nKA zgyj3Z? zacz8oA8gA?RxU1LZ&axUlf`BbwW!LkWS>_rcY=C%uDs^k(JRzSU#rlw+3kb3!mZZ^ z4uqA~vklwCkq=B1V0Q%*x|&N;RnVo>Rof+HAdzo21nb>2-Qfpe0`vv{IuOku?)ZVx zU6b}*?T!ho@-W7B&7fJs{YyXymTBA!nm@HgxoHJHIi6N;0&u>UfIzs+};Lvf-NOD2!zUuzOfG*21vBgc>U zOGob1iK1b||7H+>M{|cO{xXPvMc) XiIZcO^YR;-J^>VERb(oj!~Fgq9#f?F diff --git a/resources/libnick.svg b/resources/libnick.svg index fd1afee..cf7b11b 100644 --- a/resources/libnick.svg +++ b/resources/libnick.svg @@ -4,7 +4,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> - + @@ -24,4 +24,4 @@ y="0" /> - + \ No newline at end of file diff --git a/src/system/process.cpp b/src/system/process.cpp index eb07d4f..85bea4d 100644 --- a/src/system/process.cpp +++ b/src/system/process.cpp @@ -30,7 +30,8 @@ namespace Nickvision::System #ifdef _WIN32 m_read{ nullptr }, m_write{ nullptr }, - m_pi{ 0 } + m_pi{ 0 }, + m_job{ nullptr } #else m_pid{ -1 } #endif @@ -45,6 +46,18 @@ namespace Nickvision::System { throw std::runtime_error("Failed to create pipe."); } + //Create job + JOBOBJECT_EXTENDED_LIMIT_INFORMATION jeli{ 0 }; + jeli.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; + m_job = CreateJobObjectW(nullptr, nullptr); + if(!m_job) + { + std::cerr << CodeHelpers::getLastSystemError() << std::endl; + CloseHandle(m_read); + CloseHandle(m_write); + throw std::runtime_error("Failed to create job object."); + } + SetInformationJobObject(m_job, JobObjectExtendedLimitInformation, &jeli, sizeof(jeli)); //Create process arguments std::wstring appArgs{ L"\"" + m_path.wstring() + L"\"" }; for(const std::string& arg : m_args) @@ -65,13 +78,14 @@ namespace Nickvision::System si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; si.wShowWindow = SW_HIDE; //Create process - if(!CreateProcessW(nullptr, appArgs.data(), nullptr, nullptr, TRUE, CREATE_SUSPENDED | CREATE_NEW_PROCESS_GROUP, nullptr, nullptr, &si, &m_pi)) + if(!CreateProcessW(nullptr, appArgs.data(), nullptr, nullptr, TRUE, CREATE_SUSPENDED, nullptr, nullptr, &si, &m_pi)) { std::cerr << CodeHelpers::getLastSystemError() << std::endl; CloseHandle(m_read); CloseHandle(m_write); throw std::runtime_error("Failed to create process."); } + AssignProcessToJobObject(m_job, m_pi.hProcess); #else if(pipe(m_pipe) < 0) { @@ -88,6 +102,7 @@ namespace Nickvision::System m_watchThread.join(); } #ifdef _WIN32 + CloseHandle(m_job); CloseHandle(m_read); CloseHandle(m_write); CloseHandle(m_pi.hProcess); @@ -199,37 +214,25 @@ namespace Nickvision::System return false; } //Kill child processes spawned by the process -#ifdef _WIN32 - if(!GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, m_pi.dwProcessId)) - { - std::cerr << CodeHelpers::getLastSystemError() << std::endl; - return false; - } -#else +#ifndef _WIN32 ::kill(-m_pid, SIGTERM); #endif //Kill process #ifdef _WIN32 - if(!TerminateProcess(m_pi.hProcess, 0)) + CloseHandle(m_job); + m_job = nullptr; #else if(::kill(m_pid, SIGTERM) < 0) -#endif { std::cerr << CodeHelpers::getLastSystemError() << std::endl; return false; } - m_exitCode = -1; - m_running = false; - m_completed = true; +#endif return true; } int Process::waitForExit() { - if(hasCompleted()) - { - return m_exitCode; - } while(!hasCompleted()) { std::this_thread::sleep_for(std::chrono::milliseconds(PROCESS_WAIT_TIMEOUT)); @@ -294,9 +297,22 @@ namespace Nickvision::System } std::unique_lock lock{ m_mutex }; #ifdef _WIN32 - DWORD exitCode{ 0 }; - GetExitCodeProcess(m_pi.hProcess, &exitCode); - m_exitCode = static_cast(exitCode); + if(!m_job) + { + m_exitCode = -1; + } + else + { + DWORD exitCode{ 0 }; + if(GetExitCodeProcess(m_pi.hProcess, &exitCode)) + { + m_exitCode = static_cast(exitCode); + } + else + { + m_exitCode = -1; + } + } #else m_exitCode = WIFEXITED(status) ? WEXITSTATUS(status) : -1; #endif diff --git a/tests/processtests.cpp b/tests/processtests.cpp index 2dba426..0edc9d7 100644 --- a/tests/processtests.cpp +++ b/tests/processtests.cpp @@ -34,16 +34,12 @@ TEST_F(ProcessTest, Start) TEST_F(ProcessTest, Kill) { ASSERT_TRUE(m_proc->kill()); + ASSERT_EQ(m_proc->waitForExit(), -1); ASSERT_FALSE(m_proc->isRunning()); ASSERT_TRUE(m_proc->hasCompleted()); ASSERT_EQ(m_proc->getExitCode(), -1); } -TEST_F(ProcessTest, Wait) -{ - ASSERT_EQ(m_proc->waitForExit(), -1); -} - TEST_F(ProcessTest, Destroy) { ASSERT_NO_THROW(m_proc.reset()); diff --git a/tests/webtests.cpp b/tests/webtests.cpp index 1fe56c8..a994b77 100644 --- a/tests/webtests.cpp +++ b/tests/webtests.cpp @@ -22,6 +22,12 @@ TEST(WebTests, DownloadFile1) TEST(WebTests, FetchJsonString1) { +#ifdef _APPLE_ + if(Environment::hasVariable("GITHUB_ACTIONS")) + { + GTEST_SKIP(); + } +#endif boost::json::value json = Web::fetchJson("https://api.github.com/repos/nickvisionapps/denaro/tags"); ASSERT_FALSE(json.is_null()); ASSERT_TRUE(json.is_array());