| 1390 | } |
| 1391 | |
| 1392 | void cbm_subprocess_destroy(cbm_subprocess_t *process) { |
| 1393 | if (!process || atomic_load_explicit(&process->lifecycle, memory_order_acquire) != |
| 1394 | CBM_SUBPROCESS_TERMINAL) { |
| 1395 | return; |
| 1396 | } |
| 1397 | #ifdef _WIN32 |
| 1398 | CloseHandle(process->process); |
| 1399 | CloseHandle(process->job); |
| 1400 | #endif |
| 1401 | cbm_subprocess_free_config(process); |
| 1402 | } |
| 1403 | |
| 1404 | int cbm_subprocess_run(const cbm_proc_opts_t *opts, cbm_proc_result_t *out) { |
| 1405 | cbm_proc_result_t local; |
no test coverage detected