]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/process/detail/windows/is_running.hpp
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / boost / boost / process / detail / windows / is_running.hpp
CommitLineData
b32b8144
FG
1// Copyright (c) 2106 Klemens D. Morgenstern
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#ifndef BOOST_PROCESS_WINDOWS_IS_RUNNING_HPP
7#define BOOST_PROCESS_WINDOWS_IS_RUNNING_HPP
8
9#include <boost/process/detail/config.hpp>
10#include <system_error>
11#include <cstdlib>
12#include <boost/winapi/process.hpp>
13
14namespace boost { namespace process { namespace detail { namespace windows {
15
16constexpr static ::boost::winapi::DWORD_ still_active = 259;
17
18
19struct child_handle;
20
b32b8144
FG
21inline bool is_running(const child_handle &p, int & exit_code, std::error_code &ec) noexcept
22{
23 ::boost::winapi::DWORD_ code;
24 //single value, not needed in the winapi.
25 if (!::boost::winapi::GetExitCodeProcess(p.process_handle(), &code))
26 ec = ::boost::process::detail::get_last_error();
27 else
28 ec.clear();
29
30 if (code == still_active)
31 return true;
32 else
33 {
34 exit_code = code;
35 return false;
11fdf7f2
TL
36 }
37}
38
39inline bool is_running(const child_handle &p, int & exit_code)
40{
41 std::error_code ec;
42 bool b = is_running(p, exit_code, ec);
43 boost::process::detail::throw_error(ec, "GetExitCodeProcess() failed in is_running");
44 return b;
b32b8144
FG
45}
46
47inline bool is_running(int code)
48{
49 return code == still_active;
50}
51
52inline int eval_exit_status(int in ) {return in;}
53
54}}}}
55
56#endif