perl:执行多个系统进程并等待它们完成

2023-12-03

目前,在我的 Perl 脚本中,我进行如下调用:

system(" ./long_program1 & ./long_program2 & ./long_program3 & wait ");

我希望能够记录每个长时间运行的命令执行的时间,同时仍然异步执行它们。我知道系统调用会导致 perl 进行分叉,那么这样的事情可能吗?这可以用多个 perl fork() 和 exec() 调用来代替吗?

请帮助我找到更好的解决方案。


当然是。您可以为每个要执行的程序分叉一个子进程。

你可以做system() or exec()分叉后,取决于系统调用完成后您希望 Perl 代码执行多少处理(因为 exec() 的功能与system(); exit $rc;)

foreach my $i (1, 2, 3) {
    my $pid = fork();
    if ($pid==0) { # child
        exec("./long_program$i");
        die "Exec $i failed: $!\n";
    } elsif (!defined $pid) {
        warn "Fork $i failed: $!\n";
    }
}

1 while wait() >= 0;

请注意,如果您需要进行大量分叉,最好通过以下方式控制它们Parallel::ForkManager而不是手动进行分叉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

perl:执行多个系统进程并等待它们完成 的相关文章

  • 有没有办法替代Android中的标准Log?

    有没有办法以某种方式拦截对 android 中标准 Log 的调用并执行其他操作 在桌面 Java 中 人们通常会得到一些记录器 因此有多种方法可以安装不同的日志处理程序 实现 但是 Android似乎对Log有静态调用 我找不到任何有关替
  • 从 Amazon S3 存储桶下载文件的脚本

    尝试编写脚本以从 Amazon S3 存储桶下载文件 cURL 网站上的示例遇到问题 下面的脚本产生 我们计算的请求签名与您的签名不匹配 假如 检查您的密钥和签名方法 感谢任何帮助 bin sh file filename php buck
  • Spring boot 中特定包的自定义日志文件

    我有一个带有专门操作的java包 专业化是因为它们很少被使用 并且我不想将它们与普通日志记录混合在一起 我知道添加logging file myapplication log会将日志记录重定向到此文件 但有没有办法指定仅从特定包记录到另一个
  • 有一种简单的方法可以忽略时间戳来区分日志文件吗?

    我需要比较两个日志文件 但忽略每行的时间戳部分 确切地说是前 12 个字符 有没有一个好的工具 或者一个聪明的 awk 命令 可以帮助我 根据您使用的 shell 您可以改变方法 Blair https stackoverflow com
  • 如何在递归调用函数时阻止 bash 创建子 shell

    这是一个计算阶乘的简单 shell 函数 bin bash function factorial if 1 lt 2 then echo 1 else echo 1 factorial 1 1 fi factorial 1 但我发现这个脚本
  • 使用 -T 开关运行时 $ENV{ENV} 不安全

    当我尝试最后一个例子时perlfaq5 如何计算文件中的行数 http perldoc perl org perlfaq5 html How do I count the number of lines in a file 我收到一条错误消
  • 使用 ProtoBuf 将数据流式传输到带有标头的日志文件

    我正在尝试将数据流式传输到微控制器上 SD 卡上的日志文件 该微控制器从某些传感器读取数据并将值存储在文件中 为了序列化数据 我将使用 NanoPB 它是 C 语言的 protobuf 实现 资源效率很高 日志文件具有以下结构 它需要写入由
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 无法从日志文件中提取特定信息

    我这里有日志文件我想提取以下信息 想要提取十六进制值 如果该行有第二个括号 0 9 想要提取十进制值 首先转换为十六进制 然后提取 9 gt 0x09 想要提取负值 25 先转换为十六进制然后提取 例如 25 gt FFE7 gt 想要提取
  • logback的“谨慎模式”是如何实现的?

    The 审慎模式 http logback qos ch manual appenders html prudentlogback 中的序列化所有 JVM 之间的 IO 操作 写入同一文件 可能运行在不同的主机上 在其他日志记录框架中 如果
  • 匹配模式后添加行[重复]

    这个问题在这里已经有答案了 我有一个文件说test具有以下值 Linux Solaris Fedora Ubuntu AIX HPUX 如何在匹配 AIX 的行后面添加一行系统主机名 如果我做 echo hostname gt gt tes
  • Perl 正则表达式图灵完备吗?

    我见过 Ruby 和 Perl 程序员做了一些事情复杂的代码挑战 https codegolf stackexchange com questions 3596 regex validating regex完全用正则表达式 这前瞻和后瞻 h
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 如何在 Perl 中复制整个目录?

    我需要将整个目录复制到某个位置 最好的方法是什么 File Copy正如我所见 仅逐个文件复制 顺便说一句 我在Windows下工作 感谢帮助 也许调查一下文件 复制 递归 http metacpan org pod File Copy R
  • 使用 find 命令搜索直到第一个匹配项

    我只需要搜索可以在任何地方的特定目录有没有办法运行此命令直到第一个匹配 谢谢 我现在使用 find noleaf name experiment type d wc l 正如鲁道夫 米尔鲍尔 Rudolf M hlbauer 所提到的 qu
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • 获取变量的名称作为输入并使用该名称更改变量

    我从脚本用户那里获取变量的名称作为第一个参数 并将该变量的值回显到控制台 bin bash variablename 1 echo The value of variablename is variablename 这太棒了 我无法开始工作
  • Text::平衡和多行 xml

    看来我有点失落了 我需要解析一个大的 大约 100 mb 且相当难看的 xml 文件 如果我使用parsefile 它返回错误 文档元素后的垃圾 但它会很乐意解析文件的较小元素 所以我决定将文件分解为元素并解析它们 由于不鼓励使用正则表达式
  • 在远程 Glassfish 上进行日志记录和/或调试

    我有个问题 我在远程 Glassfish 实例上部署了一个 Web 服务 现在我需要一些简单的日志或调试系统来纠正我的代码 使用简单的打印会更好 我的想法是使用 glassfish 日志文件 因为我可以从管理 GUI 访问它 但它不起作用

随机推荐

  • “unsigned int”打印为负数?

    我取一个整数 在本例中为 192 并将其左移 24 个空格 看起来 前导 1 导致它变成负数 unsigned int i 192 unsigned int newnumber i lt lt 24 NSLog newnumber is d
  • SIMD和动态内存分配[重复]

    这个问题在这里已经有答案了 可能的重复 SSE 内在函数和对齐 我是 SIMD 编程新手 所以如果我问一个明显的问题 请原谅 我进行了一些尝试 最后发现我想在动态分配的结构中存储 SIMD 值 这是代码 struct SimdTest m1
  • 此 SqlParameterCollection 不包含 ParameterName 为“@UserId”的 SqlParameter

    我有一个登录页面 用户成功登录后 他们可以查看和管理他们的个人资料 信息 这可以通过从数据库检索数据并显示在表单视图上来完成 但是 我的 userprofile aspx cs 文件中出现以下错误 Exception Details Sys
  • 如何使用 PHP 获取服务器上运行的 PHP 进程列表

    我有一个运行 PHP 文件的 cronjob 该文件运行用 PHP 编写的 DAEMON 但我只想在没有其他实例正在运行的情况下运行 DAEMON 如何获取正在运行的 PHP 进程列表 以便查找我的守护进程正在运行 我想到了某种 exec
  • 没有 Spring Cloud 配置服务器的 RefreshScope 运行时配置

    是否可以使用 RefreshScope 通过 POST Rest api refresh 调用来刷新属性 api url 而无需设置 Spring Cloud 配置服务器和 Spring Cloud 配置客户端设置 例如 Consumer
  • Ruby 方法拦截

    我想拦截 ruby 类上的方法调用 并能够在方法实际执行之前和之后执行某些操作 我尝试了以下代码 但出现错误 MethodInterception rb 16 inbefore filter eval 2 inalias method 未定
  • dbml 文件 - 创建数据库

    我正在尝试使用创建数据库BA dbml文件 Linq 到 Sql 我知道我必须创造DataContext并创建数据库 但我不知道该怎么做 我必须创建吗DataContext in the BA cs file 这可能是多余的帖子 对此我深表
  • 如何更改 iphone sdk xcode 中的 uiimage 颜色

    我正在使用不同的图像 我想包括更改颜色选项 但我不能 有身体帮助我吗 如果你想做图像着色 请参见 UIImage Tint m 中kballard MGImageUtilities 如果您想要批量颜色替换 例如 将图像视为剪影并将整个颜色更
  • 如何比较从 url 到 NSutf8stringencoding 的字符串返回 1 或 0 与普通字符串 @"1"

    我需要使用比较 url 中的字符串NSutf8stringencoding以便返回 1 或 0 但即使字符串值为 1 它也始终返回 0 NSString strURL NSString stringWithFormat http local
  • 使用自定义表情符号创建软键盘

    我的任务是创建一个新的 android3rd party keyboard支持来自资产的自定义表情符号 我自己的图标 我想用我自己的表情符号图标实现一个软键盘不使用 Unicode 或我的自定义 Unicode 问题 如果我创建一个自定义表
  • PHPUnit + Selenium:如何设置 Firefox about:config 选项?

    使用 PHPUnit 和 Firefox 远程运行 Selenium 测试时 onChange 事件不会像用户操作浏览器时那样被触发 解决这个问题的方法似乎是设置focusmanager testmode选项true在 Firefox 的偏
  • 回发期间 GridView.DataSource 为空

    我想从我的应用程序中的每个 Gridview 实现打印 下载 csv 那些通过数据源或直接通过 gvSample DataSource Data gvSample DataBind 现在我的第一个方法是在页脚模板中设置一个下载按钮并在那里处
  • 从 .m matlab 文件中声明的矩阵创建 numpy 数组

    一位同事留下了一些我想用 Numpy 分析的数据文件 每个文件都是一个 matlab 文件 例如data m 并具有以下格式 但有更多的列和行 values 24 92 23 66 22 55 24 77 23 56 22 45 24 54
  • 查找并替换数组中的特定哈希及其值

    在数组中查找特定哈希并就地替换其值的最有效方法是什么 以便数组也发生更改 到目前为止 我已经得到了这段代码 但在具有大量数据的实际应用程序中 这成为应用程序中最慢的部分 这可能会泄漏内存 因为当我对每个 websocket 消息执行此操作时
  • 实体框架对同一个表的多次引用

    我在使用 EF 代码优先创建数据库时遇到问题 我有一个实体播放器和一个实体炸船 每个友谊都涉及两个玩家 其中一名玩家是友谊的发送者 另一位是友谊的接收者 这是我的实体 播放器 cs public class Player public in
  • 如何避免 STRING_AGG 函数中的重复

    我的查询如下 select u Id STRING AGG sf Naziv as Ustrojstvena jedinica ISNULL CONVERT varchar 200 STRING AGG TRIM p Naziv 121 a
  • 如何从 groovy/grails 查询 mongodb?

    我是否必须有一个域对象才能查询mongodb 如果我只想显示一些原始数据怎么办 查询的语法是什么mongodb从我的控制器 I tried def var db nameOfMyCollection find 但它说我的控制器类中没有 db
  • 优化 .NET 中 System.Drawing 的 PNG 输出 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我有一个例程 它读取图像
  • BeautifulSoup 返回与查看源代码不同的 html

    我是使用 BeautifulSoup 的新手 所以如果我的问题很愚蠢 请原谅我 然而 自早上 6 点以来 我一直在谷歌上搜索并尝试在每个 stackoverflow 线程中尝试建议 但无济于事 我的问题是我有一个带有基因名称的 csv 文件
  • perl:执行多个系统进程并等待它们完成

    目前 在我的 Perl 脚本中 我进行如下调用 system long program1 long program2 long program3 wait 我希望能够记录每个长时间运行的命令执行的时间 同时仍然异步执行它们 我知道系统调用会