问题标签 [named-pipes]

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.

0 投票
3 回答
1166 浏览

perl - 如何通过 Perl 以编程方式控制交互式 Unix 应用程序?

我继承了一个已有 20 年历史的交互式命令行 unix 应用程序,该应用程序不再受到其供应商的支持。我们需要自动化这个应用程序中的一些任务。

其中最麻烦的是创建数千个参数略有不同(例如不同的标识符、不同的名称)的新记录。必须按顺序创建记录,一次一个,手动完成这将花费数月(因此也需要花费大量资金)。在大多数情况下,创建记录具有键入命令、读取响应、键入更多命令等的非常可预测的模式。但是,某些记录创建操作将导致错误条件(“具有此标识符的记录已存在”),需要一组不同的命令优雅地退出。

我可以看到几种不同的方法来做到这一点:

  • 命名管道。编写一个 Perl 脚本,运行目标应用程序并将 STDIN 和 STDOUT 设置为命名管道,然后向目标应用程序发送命令序列以创建具有所需参数的记录,然后指示目标应用程序退出并关闭。然后,我们使用不同的参数根据需要多次运行脚本。

  • 应用。寻找另一个可用于编写交互式程序脚本的 Unix 工具。我唯一能找到的是expect,但这似乎并没有得到维护;和聊天,我记得很久以前,它似乎或多或少地做了我想要的,但似乎只用于控制调制解调器。

还有一个潜在的复杂性:我认为目标应用程序是为 VT100 终端编写的,它使用某种转义序列来执行诸如提供突出显示之类的操作。

我的问题是我应该采取什么方法?其中之一,还是完全不同的东西?我非常喜欢使用命名管道然后拥有一个 Perl 脚本来打开 FIFO 并根据需要进行读写的想法,因为它提供了很大的灵活性,但从我所读的内容来看,如果我走这条路。

提前致谢。

0 投票
1 回答
501 浏览

sql-server - SQL 2005 作业执行:TCP/IP 与命名管道

再会,

我在 SQL 2005 实例上有 2 个作业,它们运行一个相同的 T-SQL 步骤。该步骤对远程 2005 实例执行跨服务器查询。工作之间的唯一区别是一个由系统管理员拥有,一个不是。

系统管理员拥有的作业在代理的启动帐户下执行,不属于系统管理员的作业在作业所有者的帐户下执行。到目前为止,一切都很好。

但是,系统管理员拥有的作业尝试使用 TCP/IP 连接到链接服务器,另一个使用命名管道。我知道这是因为非系统管理员作业因命名管道连接错误而失败。我不想通过命名管道连接,因为它不支持 Kerberos。仅配置了一个链接服务器,因此两个查询都在使用它,并且在链接服务器中没有设置与网络协议相关的属性。

请注意,如果我希望连接成功,我了解远程服务器需要侦听命名管道,但这不是我的问题。我的问题是为什么 sysadmin 帐户尝试使用 TCP/IP 进行连接,而非 sysadmin 帐户尝试使用命名管道进行连接?

我继续重现这个,所以它不是侥幸(至少在我的环境中不是)。我错过了一些配置设置吗?谁能解释一下?

非常感谢。

0 投票
2 回答
732 浏览

windows - 为命名管道生成名称

为 Windows 命名管道生成名称以使其不会与其他进程冲突的“最佳方法”是什么?

0 投票
3 回答
1551 浏览

sockets - Win32 套接字与命名管道

是否可以在 Win32 上使用套接字并且没有防火墙可能阻止您正在使用的端口?

在 Unix 中,您可以使用IF_UNIX代替IF_INET(即命名管道代替套接字)。现在在 Windows 中,您可以使用不同的协议打开套接字

有没有办法打开命名管道套接字?例如(假设构造)

0 投票
1 回答
816 浏览

sql-server - 如何在 SQL Server 2005 Native Client 中以编程方式禁用命名管道?

如何在 SQL Server 2005 Native Client 中以编程方式禁用命名管道?

0 投票
4 回答
8173 浏览

c# - 只有一个客户端可以连接到命名管道

我目前正在使用 ASP.NET 3.5 和 C# 在 Windows 中学习命名管道。我编写了一个小型服务器程序,它创建了一个命名管道:

和一个客户端应用程序像这样打开管道:

只要只有一个客户端连接到管道,这就会很好。它既可以读也可以写。如果我尝试连接第二个客户端,代码永远不会超过该行

服务器和所有客户端都在同一台机器上运行。有任何想法吗?

非常感谢您!

0 投票
4 回答
6227 浏览

bash - 在管道命令中从文件内容切换到 STDIN?(Linux 外壳)

我有一个程序(不是我写的),它不是为了从文件中读取命令而设计的。在 STDIN 上输入命令非常乏味,所以我希望能够通过将命令写入文件中以供重用来自动化它。麻烦的是,如果程序遇到 EOF,它会无限循环,试图在下一个命令中读取,将无尽的菜单选项洪流放到屏幕上。

我想做的是通过管道将包含命令的文件放入程序中,然后使用某种 shell 魔术让它在遇到文件的 EOF 时从文件切换到 STDIN。

注意:我已经考虑过将 cat 与 STDIN 的“-”一起使用。不幸的是(我以前不知道这一点),管道命令在启动第二个程序之前等待第一个程序的输出终止——它们不是并行运行的。如果有某种方法可以让程序与这种管道操作并行运行,那就行了!

有什么想法吗?感谢您的帮助!

编辑:

我应该注意,我的目标不仅是防止系统到达命令文件的末尾。当文件到达 EOF 时,我希望能够继续从键盘输入命令。

0 投票
2 回答
1324 浏览

wcf - 命名管道上的 WCF

嗨,我对以下情况有疑问:

有一个 Windows 服务正在运行,它产生多个进程。这些进程通过命名管道绑定打开 WCF 服务主机。现在,父 Windows 服务尝试使用 wcf 代理通过众所周知的命名管道 ping(连接)到子进程。但是,这没有说:“找不到端点”

如果我将父进程作为控制台应用程序运行,它可以正常工作。

有任何想法吗?我在考虑权限,但子进程应该继承服务的权限,除了它们也在同一个会话中。

谢谢,克里斯托夫

0 投票
1 回答
2095 浏览

windows - 使用命名管道作为文件

这里的简单问题(尽管可能不是那么简单的答案):

是否可以为程序可以使用的(现有)命名管道指定路径,就好像它们在普通文件上打开一样?

根据这个 MSDN page,可以使用以下路径语法来引用本地计算机上的名称管道:\\.\pipe\PipeName,但是我在标准 Windows 程序中使用它没有运气。

顺便说一句,如果有人对与只能以比物理 I/O(例如命名管道)更有效的方式使用文件系统的程序进行交互有任何建议,我会很高兴接受它们。

0 投票
2 回答
1287 浏览

windows - 命名管道问题

当另一端在管道上成功调用 ReadFile 时,是否有一个函数返回。我有 2 个应用程序在命名管道上进行通信,一个使用 WriteFile 在管道上发送请求并期望得到答案,因此它调用 ReadFile。问题是应用程序正在读取自己的请求作为答案,因为另一端尚未将其从管道中删除。

有这样的功能吗?

我知道另一种选择是使用2个单向管道或通过让其他应用程序在收到消息时向发送者发出信号来实现某种或同步,但我只是在检查是否有更简单的方法......