perl / embperl -- IPC::Open3

2023-12-22

我有一个 perl 和 embperl 两种格式的示例程序

Perl 版本可以作为 CGI 运行,但 embperl 版本则不能运行。

任何建议或解决方案的指示将不胜感激

操作系统:Linux 版本 2.6.35.6-48.fc14.i686.PAE (...) (gcc 版本 4.5.1 20100924 (Red Hat 4.5.1-4) (GCC) ) #1 SMP 10 月 22 日星期五 15:27: 53 世界标准时间 2010

注意:我最初将这个问题发布给 perlmonks[x] http://www.perlmonks.org/?node_id=1086395和 embperl 邮件列表[x] http://www.gossamer-threads.com/lists/modperl/embperl/106070但没有得到解决方案。

Perl 工作脚本

#!/usr/bin/perl
use warnings;
use strict;
use IPC::Open3;

print "Content-type: text/plain\n\n";

my $cmd = 'ls';

my $pid = open3(*HIS_IN, *HIS_OUT, *HIS_ERR, $cmd);
close(HIS_IN);  # give end of file to kid, or feed him
my @outlines = <HIS_OUT>;              # read till EOF
my @errlines = <HIS_ERR>;              # XXX: block potential if massive
print "STDOUT: ", @outlines, "\n";
print "STDERR: ", @errlines, "\n";

waitpid( $pid, 0 );
my $child_exit_status = $? >> 8;

print "child_exit_status: $child_exit_status\n";

embperl 非工作脚本

[-
  use warnings;
  use strict;
  use IPC::Open3;

  my $cmd = 'ls';

  my $pid = open3(*HIS_IN, *HIS_OUT, *HIS_ERR, $cmd);

  close(HIS_IN);  # give end of file to kid, or feed him

  my @outlines = <HIS_OUT>;              # read till EOF
  my @errlines = <HIS_ERR>;              # XXX: block potential if massive
  print OUT "STDOUT: ", @outlines, "\n";
  print OUT "STDERR: ", @errlines, "\n";

  waitpid( $pid, 0 );
  my $child_exit_status = $? >> 8;

  print OUT "child_exit_status: $child_exit_status\n";
-]

这是我收到的输出

STDERR: ls: write error: Bad file descriptor

child_exit_status: 2

open3重定向与 STDOUT 关联的文件描述符,但 fd 除外1(你的程序是什么exec将考虑 STDOUT)。但事实并非如此1。它甚至没有与之关联的文件描述符!我认为这是一个错误open3。我认为你可以按如下方式解决它:

local *STDOUT;
open(STDOUT, '>&=', 1) or die $!;
...open3...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

perl / embperl -- IPC::Open3 的相关文章

随机推荐

  • 如何从堆栈中删除特定活动?

    假设我有这样的活动 A gt B gt C gt D 活动D has a Save按钮 单击该按钮后 我想取回堆栈中的两个活动 C and D是某种的一部分wizard所以我想把它们都删除 A gt B 这可能吗 从 D 启动活动 BFLA
  • android 如何从数组中包含数组的json获取数据

    我有一个应用程序 我想从本地服务器获取数据 喜欢 restarutant name Hotel Raja photo http i imgur com Mzt4u jpg address 93 2ndc ross GDP etx area
  • Pex(测试生成)真的有用吗?

    是的 可以为 Sum 或 Divide 等函数的边界值生成测试 Pex 是一个很好的工具 但更常见的是 我们对业务行为进行测试 让我们考虑一下 Beck 的经典 tdd 书中的示例 Test public void ShouldRoundO
  • 在mySQL数据库中插入多个数组值

    我有两个 PHP 变量 都是字符串 friendslist 2323443 7245 284683 345123 8456234 95432 id 10288272 我关心的表的结构如下 表名称 UserLinks link id user
  • jQuery 滑块教程?

    有谁知道一些解释如何使用 JQuery Slider 的好教程 我找到了一些 但没有一个真正清楚地表达了我所需要的内容 我真正需要弄清楚如何做的是使滑块从 1 0 5 0 包括所有十分之一 变化 并在其更改时根据该值设置隐藏控件 Thank
  • Chrome 扩展存储自定义对象类型剥离原型方法

    我创建了一个在扩展中使用的自定义对象 当我保存 Group 类型 我的对象类型 的对象 然后将这些对象从存储中取出时 原型方法似乎不再存在 现在我在文档中读到对象序列化为对象文字 我似乎不知道如何将方法与对象保持在一起 我在下面提供了小组课
  • 使用FTS查询,你能找到所有包含'abc'的条目吗

    我是全文搜索新手 如何在以下查询中使用 Contains 而不是使用 like 来执行搜索 Select From Students Where FullName LIKE abc Thanks 就像是 SELECT From Studen
  • 如何在输入字段中使用 PercentPipe

    我正在尝试创建百分比输入字段 我正在使用 PercentPipe 来显示百分比 但是当我输入一些数字时出现错误
  • x?.y?.z 是什么意思?

    规范草案C 中的模式匹配 https onedrive live com redir resid 4558A04E77D0CF5 215396包含以下代码示例 Type v x y z if v HasValue var value v G
  • 如何从 MS Access 迁移到 SQL Server 2005?

    我有一个 VB NET Windows 应用程序 可以从 MS Access 数据库中提取信息 该应用程序的主要作用是从各种格式的 Excel 文件中提取信息 标准化文件布局并将其写入 csv 文件 该应用程序使用 MS Access 作为
  • 使用 IntelliJ 部署启用嵌入式 tomcat 的 spring-boot 应用程序

    我有一个基于 spring boot 的应用程序 使用嵌入式 tomcat 我通过部署时没有问题mvn spring boot run goal but当我尝试使用 intelliJ spring boot 插件进行部署时遇到问题 重要提示
  • innodb_lock_wait_timeout 增加超时时间

    我正在使用 MySQL 数据库并尝试在插入后更新记录 因此出现以下错误ER LOCK WAIT TIMEOUT Lock wait timeout exceeded try restarting transaction 所以我通过以下查询减
  • 如何找到我在 VS Code 中使用的主题的文件夹

    我想自定义我正在使用的主题 如何找到它的文件夹 我想自定义 Atom One Darker 主题 但我找不到它的文件夹app extensions 我怎样才能找到它 As the 文档 https code visualstudio com
  • 提取 xarray 中的坐标值

    我想提取坐标变量的值 例如 我创建一个 DataArray 为 import xarray as xr import numpy as np import pandas as pd years arr range 1982 1986 tim
  • 经典 asp:错误“800a01ad”ActiveX 组件无法创建对象

    Getting 800a01ad ActiveX 组件无法创建对象在 64 位 Windows 7 上运行经典 ASP 应用程序时 我已尝试了所有建议的解决方案 但没有成功 我已在 IIS 应用程序池上启用 32 位 我已经使用C wind
  • android ICS 中的“BasicDream”是什么?

    我看了Launcher源码 版本是ICS 有一个RocketLauncher扩展的类BasicDream 什么是BasicDream 什么可以BasicDream做 我可以找到这条线import android support v13 dr
  • CIFilter输出图像nil

    我正在使用核心图像 并将 CIFilter 棕褐色色调应用于我的图像 我在 viewDidLoad 中运行一次过滤器 然后立即调用另一个再次添加过滤器的函数 由于某种原因 当我尝试访问输出图像时 应用程序崩溃并表示输出图像为零 有谁知道为什
  • WPF ComboBox 下拉菜单阻止单击其他控件

    我有一个像这样的简单表格 我打开组合框 当下拉列表打开时 我单击按钮 单击按钮时 我显示一条简单的消息 但当时未显示该消息 当我再次点击它时它会显示 文本框也有同样的问题 当下拉菜单打开时 文本框单击不起作用 为什么组合框在打开时阻止单击其
  • 如何导出每个键的数据表?

    让我们考虑一下数据表 gt dt data table v1 1 10 v2 c rep a 5 rep b 5 v1 v2 1 1 a 2 2 a 3 3 a 4 4 a 5 5 a 6 6 b 7 7 b 8 8 b 9 9 b 10
  • perl / embperl -- IPC::Open3

    我有一个 perl 和 embperl 两种格式的示例程序 Perl 版本可以作为 CGI 运行 但 embperl 版本则不能运行 任何建议或解决方案的指示将不胜感激 操作系统 Linux 版本 2 6 35 6 48 fc14 i686