|
Boost Users : |
Subject: Re: [Boost-users] [process] Determine if a process is still running?
From: Rok Breulj (sephirok_at_[hidden])
Date: 2010-09-07 19:00:19
Hey,
it's actually extremely simple. Feel free to use the following code if it
helps you:
bool Process::isRunning(pid_t pID) {
if (pID <= 0) {
return false;
}
#if defined(PLATFORM_ENVIRONMENT_WIN32)
HANDLE handle = OpenProcess(SYNCHRONIZE, false, pID);
if (!handle) {
return false;
} else {
CloseHandle(handle);
return true;
}
#elif defined(PLATFORM_ENVIRONMENT_UNIX)
if (kill(pID, 0) == -1) {
return false;
} else {
return true;
}
#endif
}
Just keep in mind that zombie pids will be reported as running.
On 7 September 2010 23:59, Allen Cronce <allenslists_at_[hidden]> wrote:
> Hi Boris,
>
> Thanks for getting back to me. We're currently using boost::process 0.31. I
> wasn't aware of 0.4, or any recent activity in boost::process. I'll keep
> that in mind the next time I have boost::process questions.
>
> As far as the create_snapshot proposal is concerned, that looks
> interesting.
>
> Unfortunately I need a solution very soon, so my guess is that I'll have to
> roll my own this time.
>
> Best,
> --
> Allen Cronce
>
> On Sep 6, 2010, at 1:54 PM, Boris Schaeling wrote:
>
> > On Mon, 06 Sep 2010 21:09:33 +0200, Allen Cronce <allenslists_at_[hidden]>
> wrote:
> >
> >> [...]I can see that boost::process supports obtaining a process ID. The
> question is can boost::process use this ID to determine if a given process,
> which was not launched as a child, is still running?
> >
> > I assume you refer to Boost.Process 0.4 which has been released recently
> and is currently heavily discussed on the Boost developer's list.
> >
> > There is a proposal at <
> http://www.highscore.de/boost/gsoc2010/process/appendices.html> how to
> create a snapshot of currently running processes. The function
> create_snapshot() wasn't finished in time though to ship it with 0.4. There
> were some more ideas to filter processes returned by create_snapshot() (eg.
> if you are only interested in processes owned by a certain user). But I
> think in general this kind of function could help you? You could then either
> iterate through the processes in the snapshot or filter with the process ID
> directly?
> >
> > Boris
> >
> > _______________________________________________
> > Boost-users mailing list
> > Boost-users_at_[hidden]
> > http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net