
Thought that perhaps somebody on this list would know if/where a/the most current version of Boost.Process might be found. Or has this library been abandoned? Begin forwarded message: From: Damien Kick <dkick@shoretel.com<mailto:dkick@shoretel.com>> Subject: Boost.Process Date: June 25, 2013 5:16:10 PM CDT To: <boris@highscore.de<mailto:boris@highscore.de>> I've found your version of Boost.Process at <http://www.highscore.de/cpp/process/index.html>. I noticed that the date on this page is from 2009; are you still working on this library? If not, thank you for your effort so far. If you are still working on the library, I was hoping you might have some insights and/or help for a compilation error I'm finding when trying to use Boost.Process with Boost 1.53 on Windows 7 with Visual Studio 2010 SP1. First of all, I had to add a header file to .../process/operation.hpp; i.e. I had to add #include <boost/filesystem/operation.hpp> to get the declaration of boost::filesystem::filesystem_error. But then I'm finding the following error 1>------ Build started: Project: ZERO_CHECK, Configuration: Debug Win32 ------ 2>------ Build started: Project: test-cma, Configuration: Debug Win32 ------ 2> cma.cpp 2>Z:\Documents\perforce\dkick-mac\projects\DandM\DMTarget\windows-6.1\msvc-10.0\include\boost/process/detail/pipe.hpp(129): error C2665: 'boost::system::system_error::system_error' : none of the 7 overloads could convert all the argument types 2> Z:\Documents\perforce\dkick-mac\projects\DandM\DMTarget\windows-6.1\msvc-10.0\include\boost/system/system_error.hpp(39): could be 'boost::system::system_error::system_error(int,const boost::system::error_category &,const std::string &)' 2> Z:\Documents\perforce\dkick-mac\projects\DandM\DMTarget\windows-6.1\msvc-10.0\include\boost/system/system_error.hpp(43): or 'boost::system::system_error::system_error(int,const boost::system::error_category &,const char *)' 2> while trying to match the argument list '(DWORD, overloaded-function, const char [54])' ========== Build: 1 succeeded, 1 failed, 3 up-to-date, 0 skipped ========== Which is coming from .../boost/process/detail/pipe.hpp (the bold italic line below). From the quick skim I've given some of the documentation, I think the fact that BOOST_PROCESS_WINDOWS_USE_NAMED_PIPE is not defined means that I would find some features disabled, right? How is this determined; i.e. whether or not to define BOOST_PROCESS_WINDOWS_USE_NAMED_PIPE? # if defined(BOOST_PROCESS_WINDOWS_USE_NAMED_PIPE) static unsigned int nextid = 0; std::string pipe = "\\\\.\\pipe\\boost_process_" + boost::lexical_cast<std::string>(::GetCurrentProcessId()) + "_" + boost::lexical_cast<std::string>(nextid++); hs[0] = ::CreateNamedPipeA(pipe.c_str(), PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED, 0, 1, 8192, 8192, 0, &sa); if (hs[0] == INVALID_HANDLE_VALUE) boost::throw_exception(boost::system::system_error(::GetLastError(), boost::system::system_category, "boost::process::detail::pipe::pipe: CreateNamedPipe failed")); hs[1] = ::CreateFileA(pipe.c_str(), GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); if (hs[1] == INVALID_HANDLE_VALUE) boost::throw_exception(boost::system::system_error(::GetLastError(), boost::system::system_category, "boost::process::detail::pipe::pipe: CreateFile failed")); OVERLAPPED overlapped; ZeroMemory(&overlapped, sizeof(overlapped)); overlapped.hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL); if (!overlapped.hEvent) boost::throw_exception(boost::system::system_error(::GetLastError(), boost::system::system_category, "boost::process::detail::pipe::pipe: CreateEvent failed")); BOOL b = ::ConnectNamedPipe(hs[0], &overlapped); if (!b) { if (::GetLastError() == ERROR_IO_PENDING) { if (::WaitForSingleObject(overlapped.hEvent, INFINITE) == WAIT_FAILED) { ::CloseHandle(overlapped.hEvent); boost::throw_exception(boost::system::system_error(::GetLastError(), boost::system::system_category, "boost::process::detail::pipe::pipe: WaitForSingleObject failed")); } } else if (::GetLastError() != ERROR_PIPE_CONNECTED) { ::CloseHandle(overlapped.hEvent); boost::throw_exception(boost::system::system_error(::GetLastError(), boost::system::system_category, "boost::process::detail::pipe::pipe: ConnectNamedPipe failed")); } } ::CloseHandle(overlapped.hEvent); # else if (!::CreatePipe(&hs[0], &hs[1], &sa, 0)) boost::throw_exception(boost::system::system_error(::GetLastError(), boost::system::system_category, "boost::process::detail::pipe::pipe: CreatePipe failed")); # endif ________________________________ This e-mail and any attachments are confidential. If it is not intended for you, please notify the sender, and please erase and ignore the contents.