标准输出重定向

2024-02-14

我正在使用 tcl 中的一个程序,我无法控制该程序。它在输出窗口上输出很多详细信息,例如:

Response:<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server</faultcode><faultstring>Item not valid: The specified Standard SIP1 Profile was not found</faultstring><detail><axlError><axlcode>5007</axlcode><axlmessage>Item not valid: The specified Standard SIP1 Profile was not found</axlmessage><request>updatePhone</request></axlError></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>

有什么办法可以将这个标准输出重定向到变量吗?我是 tcl 的新手,不知道如何做到这一点。


如果您使用 Tcl 8.6,您可以将所有输出捕获到stdout通过添加合适的变换chan push http://www.tcl.tk/man/tcl8.6/TclCmd/chan.htm#M32:

# Use a class to simplify the capture code
oo::class create CapturingTransform {
    variable var
    constructor {varName} {
        # Make an alias from the instance variable to the global variable
        my eval [list upvar \#0 $varName var]
    }
    method initialize {handle mode} {
        if {$mode ne "write"} {error "can't handle reading"}
        return {finalize initialize write}
    }
    method finalize {handle} {
        # Do nothing, but mandatory that it exists
    }

    method write {handle bytes} {
        append var $bytes
        # Return the empty string, as we are swallowing the bytes
        return ""
    }
}

# Attach an instance of the capturing transform
set myBuffer ""
chan push stdout [CapturingTransform new myBuffer]

# ... call the problem code as normal ...

# Detach to return things to normal
chan pop stdout

注意事项:这捕获了all通道上的输出,无论如何产生(它甚至可以跨线程工作或在 C 级别生成输出),这使得bytes into myBuffer因为捕获是在转换为通道配置的编码之后应用的。并且需要8.6;相关的 API 并未暴露于早期版本中的脚本(尽管它的 C 等效项被某些扩展使用,例如 SSL 支持)。

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

标准输出重定向 的相关文章

  • 如何在Tcl中安装软件包?

    我正在尝试安装critlib在我的机器上 http equi4 com critlib http equi4 com critlib 这样我就可以在 Tcl 中动态创建 zip 文件 问题是我不知道如何安装 Tcl 软件包 您是否有放置文件
  • Strawberry Perl v5.30.0 无法安装 Tcl (Windows 10)

    我从下载并安装了草莓 perl 5 30 0 1 64bit msi草莓perl com http strawberryperl com 在我的 Windows 10 上并尝试使用 cpan 安装 Tcl 模块 但由于缺少 tclsh 而失
  • 卸载活动 TCL Mac

    我正在尝试在 Mac 上卸载 Active TCL 但网站提供的代码不起作用 我收到错误消息 指出不是目录 当我查看代码提供的文件路径时 我可以手动查找 但它不起作用 还有其他方法可以摆脱这个吗 以下是提供的代码 cd Library Fr
  • 快速字符串替换

    在构建了一个可能非常大的字符串后 我将对其进行大量更改 将其中的单个字符 或字节 如果需要 更改为另一个字符 实际上 我的脚本正在构建一个填字游戏 因此字符串不会很长 但我的问题很笼统 我如何利用我不改变字符串 或任何更好的数据类型 长度的
  • 如何将 put 的输出作为输入提供给过程?

    我有一个将列表打印为格式化表格的过程 它有像 print table temp 这样的用例 我如何给出不同过程的输出 其中我使用 puts 命令打印输出作为该过程 print table 的输入 set list1 abc 1 defg 2
  • 如何在 tcl 中使用 split 删除不需要的字符

    这是一个例子 Interface IP Address OK Method Status Protocol FastEthernet0 0 unassigned YES unset administratively down down Fa
  • 有没有办法将 Python/Tkinter 连接到已经运行的 Tcl/Tk 应用程序?

    我在 Pure Data 上做了很多工作 这是一个用 Tcl Tk 和 C 编写的应用程序 我希望能够为修改 Tcl Tk GUI 的插件制作一个 python API 为此 我似乎需要能够将正在运行的 Tk 实例传递给 python 然后
  • 如何使用 Swig 将枚举值从 TCL 脚本传递到 C++ 类

    我正在使用以下代码 1 文件 example i module example Put header files here or function declarations like below include example h incl
  • 生成和执行之间有什么区别?

    我正在学习编写 TCL 期望 脚本 我注意到一些示例显示了如何使用 spawn 而其他示例则显示了命令 exec 我尝试谷歌搜索 但找不到有什么区别 假设我在一个很长的期望脚本中间调用 exec 我会期望发生什么 spawn is an e
  • TCL 的通用字符串引用

    我正在编写一个实用程序 恰好是在 python 中 它以 TCL 脚本的形式生成输出 给定 python 中的一些任意字符串变量 不是 unicode 我想生成一个 TCL 行 例如 set s something 这将设置 TCL 变量
  • 我可以从 Tcl 中的文件句柄中找到文件名吗?

    如同我可以从 Perl 中的文件句柄中找到文件名吗 https stackoverflow com questions 2813092 can i find a filename from a filehandle in perl但在 Tc
  • 循环提示输入另一个密码时出现问题

    我需要一些关于 EXPECT 脚本的帮助 我正在尝试在访问大量主机之前自动登录 并在用户错误输入密码时进行处理 我首先获取用户名和密码 然后针对特定主机对其进行验证 如果密码无效 我想循环并再次询问用户名和密码 我正在尝试这个 省略前面几行
  • 使用 tkinter 时如何将 tcl 中的 stdout 获取到 python 字符串变量中?

    我有以下 python 代码 import Tkinter root Tkinter Tk root tk eval puts printed by tcl 它会在屏幕上打印 printed by tcl 如何将 tcl 解释器打印到屏幕上
  • tcl:如何使用变量的值创建新变量

    这是我正在尝试做的一个例子 set t SNS set t top commands that return value 想要获取存储在 t top 的信息 puts t top SNS top really want the data s
  • 在 Tkinter 中处理触摸屏手势

    我将如何在 Tkinter 中安装触摸屏手势处理程序 我需要一些特别简单的事情 每当检测到 展开 手势时就增加字体大小 如果 Tcl Tk 没有具体实现的话 这是否可以在 Tkinter 中实现 我想要么窗口管理器向客户端窗口发送一些我可以
  • 如何在tcl中搜索数字即进程ID并杀死进程ID

    我尝试搜索存储在变量 say 缓冲区中的进程 id i e 6762 nohup tcpdump ni eth0 s0 2 gt 1 null 1 6762 You have new mail in var mail root 如果匹配的话
  • TCL - 使用正则表达式获取另一个字符串中由空格分隔的字符串列表

    如何在 TCL 中编写匹配单词和空格的正则表达式 例如我有 aaaa bbbb cccc 我想匹配 aaaaa bbbb cccc 另外请告诉我空白和非空白的正则表达式符号是什么 我到处都找不到它 Thanks 我的想法是只搜索单词字符的分
  • Tcl正则表达式

    set d aa1 1 set d aa2 1 set d aa3 1 set d aa4 1 set d aa5 1 set d aa6 1 set d aa7 1 set d aa8 1 set d aa9 1 set d aa10 1
  • 从 Bash 调用的 Expect 脚本的退出状态代码

    我制作了一个 Bash 脚本 它使用 Expect 脚本来自动进行 ssh 登录 该脚本连接到多个服务器并运行一些命令 bash 脚本会提示输入一次登录凭据 我想合并一个功能 其中如果第一个服务器登录失败 脚本将终止 以避免脚本检查下一个服
  • 使用 Expect 自动化 xterm

    我正在尝试自动化xterm窗口使用Expect 虽然我已经知道Expect无法控制此类 GUI 应用程序 但有一个调整机制解释于探索期待 http shop oreilly com product 9781565920903 do pack

随机推荐

  • 多态不是继承的副作用吗?

    我刚刚学习了 oop 并且正在努力解决继承和多态性之间的区别 如果我理解正确的话 继承定义了类型层次结构和类之间的关系 子类从父类继承行为 并且可以提供父类上任何公共接口的专门行为 多态性是这些子类可以提供自己的行为 同时仍然遵守父接口 这
  • 如何捕获返回 lambda 的函数的返回值类型?

    鉴于此代码 template
  • JAXB - 属性“值”已定义。使用 解决此冲突

    使用 JAXB 生成 XML 绑定类 该架构基于一组旧版 XML 文件 并包含以下代码片段
  • 回调notifyiteminserted/notifyitemremoved/notifyitemmoved

    寻找一些非常简单的东西 我在源代码中查看了RecyclerView但找不到任何东西 在我开始实现我自己的版本之前 我想知道是否有人知道如何接收动画回调notifyiteminserted notifyitemremoved notifyit
  • haskell:输出非ascii字符

    我想在 WinGHCi 中输出非 ASCII 字符 但这就是我得到的 Prelude gt 948 Prelude gt putStr 948 Exception
  • Spring boot 中的 CORS 策略冲突

    我是 Spring Boot 的新手 我使用 Spring Boot 实现了一些基本的 REST api 当我尝试使用 React 调用这些 api 时 我在调用某些 CORS 策略时遇到错误 然后我找到了该问题的解决方案 除了登录 api
  • 针对数据库的 EF 模型验证

    我想使用 EF 5 模型验证来避免数据库中出现重复值 因此我使用如下模型类 Table MeasureUnits public class MeasureUnit IValidatableObject public int MeasureU
  • 将自定义代码样式 xml 传递给 gradle idea 插件

    有没有办法告诉gradle idea插件在生成项目文件时使用自定义代码样式xml 我总是可以将 xml 复制到 Library Preferences IntelliJIdea13 codestyles 中 然后在导入项目后更改代码样式 但
  • gradle和manifest上的Android sdk版本

    我几周前开始使用 Android Studio 有一个问题 在 build gradle 文件中 我们可以像在清单中一样设置 minSdkVersion 但是一个会覆盖另一个吗 如果我们在 gradle 和 Manifest 上设置不同的值
  • Django:自动生成目录中的文件列表

    我在我的网站上使用图片库应用程序 目前 我将图像文件放在一个目录中 并手动为每个图像编写 img html 标签 是否可以让 django 自动在目录中创建文件列表 并将 json 输出发送到图库应用程序 以便我可以使 javascript
  • 如何在 Angular 拦截器内的请求正文中添加一些内容?

    在这里 我可以修改标题 因为有多个关于此功能的教程 但是 Injectable export class MyFirstInterceptor implements HttpInterceptor constructor private c
  • 离线时准确检测时间

    背景资料 我正在开发一个连接到服务器的 iOS 应用程序 可以从设备向服务器发出请求 以将本地数据库与服务器的数据库同步 更改可能发生在任一数据库上 该应用程序还具有离线功能 用户可以在不连接到互联网连接的情况下修改数据 只有在线才能通过发
  • 在怪癖模式下无法正常工作的所有内容的列表? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人有 Quirks 模式 特别是 IE Quirks 模式 中存在 bug 的 HTML JavaS
  • 用户提供的 MSSQL 数据库的 Pivotal/Django 设置

    我在 Pivotal Cloud Foundry 上部署了一个 django 应用程序 在开发过程中 我只是坚持使用内置的 sqlite 数据库 同时将 UI 组合在一起 不需要保留数据 因此推送 删除不是问题 此后 我在本地服务器 Azu
  • 使用相似性 Postgres 模糊自连接查询提高性能

    我正在尝试运行一个查询 该查询将表与自身连接起来 并进行模糊字符串比较 使用三元组比较 以查找可能的公司名称匹配 我的目标是返回一个记录的公司名称 ref name 字段 的三元相似度与另一记录的公司名称匹配的记录 目前 我将阈值设置为 0
  • PHP 按索引对二维数组进行排序(非关联)

    该代码无法正常运行 但它表明了我正在尝试做的事情 function sort 2d by index a i function cmp x y Nested function can t find i global i defeats th
  • putStrLn 不打印到控制台

    我正在尝试 wxHaskell 我无法在 ghci 下运行该应用程序 因此我必须使用应用程序来测试它 我想用 println 调试来测试程序 然而 putStrLn 似乎在 GUI 中不起作用 LANGUAGE Haskell2010 mo
  • 是否可以在角度 2+ 中进行条件内容投影(嵌入)

    我想提供仅在内容未被嵌入时才会出现的默认内容 例如 这是我的组件模板
  • 如何从 Z3 中的 Seq 类型中提取元素作为基本类型?

    如何将序列中的元素提取到基本类型 以便以下内容正常工作 define sort ISeq Seq Int define const x ISeq seq unit 5 define const y ISeq seq unit 6 asser
  • 标准输出重定向

    我正在使用 tcl 中的一个程序 我无法控制该程序 它在输出窗口上输出很多详细信息 例如 Response