草庐IT

fork-exec

全部标签

java - ProcessBuilder 与 Runtime.exec()

我正在尝试使用Inkscape的命令行功能在Java中创建一个前端应用程序来处理批量SVG转换。我正在获取并更新来自https://sourceforge.net/projects/conversionsvg/的代码.原始开发人员通过Runtime.getRuntime().exec(String)处理调用Inkscape的方式。我遇到的问题是使用methodA和methodB之间存在一些不一致。我创建了一个简单的Java测试项目来演示正在执行的不同操作。CallerTest.javapackageconversion;importjava.io.IOException;publicc

java - 从 mvn exec :java 运行的类中捕获标准

我想使用Maven的exec命令运行一个main方法。我可以将其设置为运行良好,但我的类的输出被Maven的文本包围。[INFO]Errorstacktracesareturnedon.[INFO]Scanningforprojects...[WARNING]...(actualprogramoutput)...[INFO]BUILDSUCCESS[INFO]------------------------------------------------------------------------[INFO]Totaltime:11.351s[INFO]Finishedat:Fri

java - 拥有 fork 的 Java VM 意味着什么?

我有时会在运行JUnit测试时遇到此错误。我并不是在问错误是什么。我只想知道JavaVMfork时的含义? 最佳答案 “forkVM”不是错误(尽管您遇到的错误可能与其相关)。一些涉及编译和测试各个方面的工具(例如Maven)是用Java编写的,并使用JVM自行运行。如果您在不forkVM的情况下为您的应用程序运行单元测试,Maven将在与Maven运行相同的VM中运行这些测试。因此,它可能会受到某些VM范围设置(例如某些系统属性)的影响。为了避免Maven带来的副作用,可以在fork的VM中运行测试,也就是说,在作为操作系统中不同

java - Surefire Maven 插件 : "Corrupted STDOUT by directly writing to native stream in forked JVM"

我的JUnit测试在通过Maven和Surefire插件(下面的版本信息)运行时失败了。我看到错误消息:CorruptedSTDOUTbydirectlywritingtonativestreaminforkedJVM4.SeeFAQwebpageandthedumpfileC:\(...)\target\surefire-reports\2019-03-20T18-57-17_082-jvmRun4.dumpstreamFAQ页面指出了一些可能的原因,但我不知道如何使用这些信息来开始解决这个问题:CorruptedSTDOUTbydirectlywritingtonativestre

java - 如何使用 exec :java Instead of exec:exec? 在 Maven 中运行 JMH 基准测试

这postonjavapapers.com显示如何运行JMH通过键入mvnexec:exec在Maven中进行基准测试。在Maven中运行JMH非常方便,因为您可以轻松地从Eclipse运行配置甚至在Maven阶段运行它。但是,这个设置有两个问题:当您终止Maven时,JMH将继续在后台运行,因为exec:exec在单独的VM中启动它。通常,JMH会启动另一个VM来运行基准测试,因此您最终会同时运行至少3个VM。幸运的是,ExecMavenPlugin带有第二个目标,exec:java,它直接在VMMaven运行中执行一个主类。但是,当我尝试配置Maven以使用exec:java运行J

docker无法启动报错start docker Failed at step EXEC spawning /usr/bin/containerd

报错内容:docker无法启动报错startdockerFailedatstepEXECspawning/usr/bin/containerd找不到/usr/bin/dockerd文件解决思路:1、首先看一下二进制安装docker的路径/usr/local/bin对于旧的docker启动文件进行删除rm-rf/etc/systemd/system/devicemapper.conf然后新添加docker.service cat>/etc/systemd/system/docker.service[Unit]Description=DockerApplicationContainerEngine

java - Apache Commons Exec 为包含空格的参数生成太多引号?

ApacheCommonsExec中存在错误,或者我使用的API有误,但是当我使用CommandLine类添加包含空格的参数时,添加了一些引号,然后给出的论证的一部分。例如:当我调用java"whatversion"时,我得到java.lang.NoClassDefFoundError:whatversion,当我调用java"\"什么版本\""(包含转义引号,它们是命令行参数本身的一部分),我得到java.lang.NoClassDefFoundError:"whatversion"。所以下面的测试失败了,因为正如你在最后一行看到的,ApacheExec在它应该生成第一个版本的地方生

c++ - 在 Linux 中将 fork() + execlp 与 boost::asio 一起使用时解决重用错误

我有一个程序在TCP端口上监听特定字符串并使用execlp调用启动应用程序。我正在执行fork()以在此execlp调用之前启动子进程。在此启动后,父进程再次开始监听同一端口。我正在关闭子进程中的套接字。我在boost::asio::tcp_socket上写了一个包装器,我在绑定(bind)套接字之前将addr_reuse选项设置为true.现在我的问题是在Linux中,我在应用程序启动几次后收到地址重用错误。在我的程序中,它不断尝试接受连接(或者更准确地说,尝试安排对boost::asio::io_service的接受)直到绑定(bind),然后接受成功。所以我在这个循环中收到了错误

c++ - gcc 和 g++ 错误 : error trying to exec 'cc1plus' : execvp: No such file or directory

我在编译时遇到问题.c和.cpp使用gcc的文件和g++,对于这两种情况,我都收到了消息:g++(orgcc):errortryingtoexec'cc1plus':execvp:Nosuchfileordirectory`我已经尝试重新安装gcc和g++并确保它们的版本相同。编辑:我使用的是ubuntu16.04.1LTS,g++和gcc的版本都是5.4.020160609。以下是echo|g++-v-xc++-fsyntax-only-的输出:Usingbuilt-inspecs.COLLECT_GCC=g++Target:x86_64-linux-gnuConfiguredwit

c++ - fork() 除了执行外部程序之外的用处

我阅读的有关fork()的教程、手册和其他资源通常只包含可以使用线程更好地解决的示例。他们只是交流,做一些非常基本的任务,然后再次交流以分享或展示结果。我有一种感觉,除非你的意图是启动一个外部程序(通过让父亲继续和child启动那个外部程序),否则线程总是比fork更容易处理、更灵活、更安全。当fork()优于仅使用线程时,还有其他应用领域吗?除了病毒,就是这样。 最佳答案 您可以使用fork()作为一种在不停止原始应用程序的情况下从应用程序生成快照的简单方法。由于操作系统将进程的虚拟内存映射为写入时的拷贝,因此除了已更改的数据(加