- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个程序,并且我正在尽可能地异步执行。
我需要运行一个程序,当这个程序完成时它调用一个回调函数。我找到了一个版本的 boost::process 并决定使用,但似乎有示例但在我下载的源代码中找不到实现,有人可以帮助我吗?
代码示例 http://www.highscore.de/boost/gsoc2010/process/user_guide.html#boost_process.user_guide.waiting并在此处下载源代码 boost::process www.highscore.de/cpp/process/
我需要为它或在那里创建一个实现,但我从错误的地方获得了源代码?
这是解决我的问题的示例代码。
boost::asio::io_service ioservice;
void end_wait(const boost::system::error_code &ec, int exit_code);
int main()
{
std::string exe = boost::process::find_executable_in_path("hostname");
std::vector<std::string> args;
boost::process::child c = boost::process::create_child(exe, args);
boost::process::status s(ioservice);
s.async_wait(c.get_id(), end_wait);
ioservice.run();
}
void end_wait(const boost::system::error_code &ec, int exit_code)
{
if (!ec)
{
#if defined(BOOST_POSIX_API)
if (WIFEXITED(exit_code))
exit_code = WEXITSTATUS(exit_code);
#endif
std::cout << "exit code: " << exit_code << std::endl;
}
}
抱歉我的英语不好问候布鲁诺
最佳答案
我知道这篇文章已经很老了,但它在 Google 中的排名很高(我遇到了同样的问题)。文档错误 - 整个 boost::process::status
类不存在,get_id()
方法实际上是 id()
.
这是异步等待进程退出的正确方法
#include <iostream>
#include <boost/asio.hpp>
#include <boost/process.hpp>
#include <boost/process/async.hpp>
#include <boost/process/extend.hpp>
struct MyHandler : boost::process::extend::async_handler {
template <typename ExecutorType>
std::function<void(int, std::error_code const&)> on_exit_handler(ExecutorType&) {
return [](int exit_code, std::error_code const& ec) {
if (ec) {
// handle error
}
#if defined(BOOST_POSIX_API)
if (WIFEXITED(exit_code))
exit_code = WEXITSTATUS(exit_code);
#endif
std::cout << "exit code: " << exit_code << std::endl;
};
}
};
int main()
{
boost::asio::io_service io;
boost::process::child child{"/bin/echo", std::vector<std::string>{"testing"}, MyHandler{}, io};
io.run();
}
关于c++ - Boost::process async_wait 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3827734/
我正在浏览 boost::asio 示例。我在看 Example 4 令人困惑的是,这个例子中的 WaitHandler 有签名 void print (this) 但是 async_wait 调用需
我有一些 lua 脚本有一些长时间运行的任务,比如获取网页,所以我让它 yield 然后 C 代码句柄获取页面作业异步,所以线程可以自由地做其他工作,并在指定时间后返回检查查看获取页面作业是否已完成,
我们有一个方法需要经常调用来做一些计算(大约每秒 20 次)。这是一个同步调用。调用者需要尽快得到结果。但该计算过程有时花费的时间比预期的要长。我们不想改变其他任何东西。我们只是想添加一种监控机制来标
这很好用: class cStartSequence { void Tick() { // do something } void Wait() { myTimer->expires_f
在打开的套接字上时,我调用async_read()/read(),对等方随后关闭套接字-我将在处理程序中收到eof错误,但是对于async_wait()/wait()不会发生,该处理程序调用时没有错误
我正在创建一个程序,并且我正在尽可能地异步执行。 我需要运行一个程序,当这个程序完成时它调用一个回调函数。我找到了一个版本的 boost::process 并决定使用,但似乎有示例但在我下载的源代码中
我正在学习 Boost.Asio,但我对 boost::asio::deadline_timer async_wai 有疑问。这是来自 boost 主页的代码: // // timer.cpp //
在我的应用程序中,我发送和接收大量消息并充当服务器。与此同时,我检查客户端的 session 超时。当我在我的应用程序中不使用 async_wait 时,我的程序运行良好。但是当我使用 async_w
我执行一个简单的例子作为测试,我想在 5 秒后执行一个简单的操作。我正在使用带有 async_wait 的 boost::deadline_timer,但是 async_wait 不是异步等待...这
我正在学习 boost asio 文档。我遇到了这个 deadline_timer 示例。 #include #include #include #include /*This timer e
boost asio deadline_timer async_wait 函数采用以下形式的处理程序: void handler(const boost::system::error_code& er
当我在方法 SendMessageAgain 中调用 deadline_timer::async_wait 时,偶尔会抛出段错误。它可以通过以下两种方式之一发生;我在下面包含了回溯。它似乎是随机的,这
这个问题在这里已经有了答案: How to use boost bind with a member function (3 个答案) 关闭 7 年前。 在这个类中使用 boost 异步定时器的例子
这个问题的灵感来自 boost asio 文档 (link) 中关于异步定时器的教程。代码略作修改,效果更明显。 有一个相关的问题,Multiple async_wait from a boost A
为什么将 lambda 传递给 asyn_wait() 需要 auto ... 参数,而传递函数不需要这样的东西(即只需要函数名就可以),如 timer.async_wait( &print ); i
我已经实现了一个优先级从asio examples开始的任务队列和一个使用这个队列的定时器类。这是代码: priority_task_queue.h class handler_priority_qu
我得到了 boost io_service在一个线程中运行,我想在客户端发生某个事件后 6 秒在该线程中触发回调,如果该客户端已经在运行,则重置该客户端的计时器。 我维护一个 unordered_ma
我目前正在尝试使用 Boost::Asio 创建一个服务器应用程序,它可以做两件简单的事情: 接受客户的传入连接 一旦客户端被接受,启动一个boost::asio::deadline_timer,它会
我想转这个电话: timer.async_wait(handler); 进入这个电话: func(handler); 所以我尝试使用 std::bind: #include #include #i
是否可以在同一个 boost::asio::deadline_timer 上多次调用 async_wait? 我的意思是像下面这样: t->expires_from_now(delay); t->as
我是一名优秀的程序员,十分优秀!