问题标签 [boost-process]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在异步模式下使用 boost 进程运行进程并超时
在下面的代码中,我试图实现一个运行 shell 命令并获取stdio
,stderr
并返回代码的程序。我正在按照此处boost process
建议的async
模式使用它。
现在,上面的代码只有在deadline_timer
过期后才返回。我想要的是,如果子进程在计时器到期之前完成,或者它(连同它派生的所有子进程)应该终止,它应该退出。请指出我代码中的错误。
c++ - 阻塞信号导致升压过程不起作用
在下面的代码中,该类Process
可以boost process
在异步模式下运行一个进程,如果超时可以终止它。现在为了关闭它,我阻塞了所有线程中的所有信号,并创建了一个特定的线程 signal_thread 来处理信号。这样做时,程序停止工作。我猜这可能是因为父进程无法再收到信号SIGCHLD
并且知道子进程已经执行完毕。
请建议我如何使用信号处理线程关闭程序以及使程序正常工作。
c++ - boost::process 子进程在读取所有标准输出之前终止
我想使用 boost-process 从命令中读取标准输出:
这几乎与 boost-process教程相同。
对于测试,“命令”只是转储一个包含 10000 行的文本文件。
问题是我的代码没有读取命令的所有输出(对于测试用例,它只读取大约 9700 行)。
我究竟做错了什么?
似乎子进程在读取所有标准输出之前就终止了。
c++ - Solaris 10 上的 Boost Process 在异步模式下失败
我正在使用boost process
inasync
模式从C++
应用程序运行 shell 命令。以下代码在Linux
(CentOS 7
在我的情况下)运行良好,但在Solaris 10
. On Solaris 10
,返回码是127
andstdout
并且stderr
是空的。
CentOS 7 上的输出
Solaris 10 上的输出
这是在truss
.
请帮我弄清楚发生了什么。
c++ - 如何使用 boost::async_system?
我对 boost 以及使用库的多线程和启动应用程序都很陌生。对于我想要的功能,同事推荐我使用 boost::process 库。
但是这部分 boost 的文档是相当不足的,所以我无法通过文档确定哪个函数最适合我的任务。因此,我开始在那里尝试几个功能,但 non 具有所有所需的属性。
但是有一个我不知道如何正确使用。我什至无法编译它,更不用说运行它了。函数是 boost::process::async_system。我在互联网上的任何地方都找不到有关如何使用此功能以及各个组件的含义和作用的分步指南。
有人可以向我详细解释函数的各个参数和模板参数吗?或者提供详细手册的链接?
c++ - 使用 boost 创建具有自定义环境的子进程
文档提升没有提供任何使用process::child(...)
.
给出了一个示例,process::system(...)
但该函数system
的操作可能较少(例如管道或 waitpid),因此如果可能,我希望有一个完整的示例process::child
。
c++ - Connect to boost named pipe
I have this code:
Now, I execute echo 42 > \\.\pipe\SamplePipe
in the cmd and expect an asynchronous read to the buffer to occur. But instead I get the following error: "All pipe instances are busy." Can somebody please explain to me why this is happening and how i can fix it?
c++ - 将功能从控制台应用程序移动到共享库项目似乎会带来不相关的编译错误
我的解决方案有几个 c++ 控制台应用程序。该解决方案还有一个作为静态库 (.lib) 构建的项目。该库在所有控制台应用程序中用于任何常见功能。所有这些项目还使用各种 boost 库。
最近需要在其他应用程序中重用来自控制台应用程序的函数。因此,我决定将该函数从控制台应用程序移出到该静态库。但是,这样做会带来以下编译错误。
此函数使用 boost::process 库,它在控制台应用程序中运行良好。但是,当我将相同的函数移动到共享库项目中时,我开始看到此错误。没有其他警告,也没有指向我的任何应用程序代码。知道这个错误背后的原因是什么吗?
c++ - 如何避免参数数量取决于条件的调用分支?
我正在将一些代码从 using 转换CreateProcess
为使用boost-process。我需要CreateProcess
用boost::process::child
. 问题是他们有不兼容的方式让我说“我想使用默认值”。以前的单行命令变成了十六条if
语句。
我目前使用的功能是这样的(简化的):
每个参数都有一个值,您可以使用它来指示您想要默认值。我将在这个例子中使用 0:
这是一种常见的设计。你知道我在说什么。我是否想使用默认值可以通过一个简单的条件来决定,例如(... ? 0 : int_param)
. 这允许每次CreateProcess
调用都是一行代码。
在我以前调用的地方CreateProcess
,我现在想创建一个child
类。像这样工作的构造函数child
:
而不是传递一个特定的值来使用默认值,我必须传递 nothing。
到目前为止,我唯一的“解决方案”是使用if
分支。
这个例子只有两个可能的参数,它变成了四个分支。实数child
有四个可能的参数,所以每个实例都有十六个分支。
我想要的是某种方式来构建调用以避免这种分支。特定于的解决方案boost::process
也很好。
仅供参考,最后两个参数child
可能是也可能不是同一类型。