这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令封装,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
封装 - 在单个套接字上多路复用多个通道,并对远程采样
进程退出状态,并在不关闭套接字的情况下提供会话终止。
网络管道 4.2
概要
封装 --fd n [ --详细 [ --子过程 [ --infd n[=SID] ] [ --outfd n[=SID] ] [
--双工 n[=SID] ] [ --双工 n[=SID] ] [ --双工 n[=SID] ] [ --首选本地 [
--首选远程 [ --仅限本地 [ --仅远程 ] ] [ - 客户 [ - 服务器 ]
-[#n][v][s[in][on][dn][ion][oin][l][r][L][R]] 命令 ARGS ...
商品描述
封装 以有限的方式实现会话控制协议 (SCP)。
封装 使用 SCP 在单个套接字上多路复用多个虚拟通道。
封装 将本地程序的退出状态通过a传输到远程端
保留 SCP 通道并接收返回的远程退出状态。 封装 提供
不关闭套接字的会话边界。
标志可以按任何顺序出现。 第一个不是标志的参数是命令
产卵(假设 --子过程 指定,否则出错)。
配置
--fd n, -#n : 指定我们将复用子进程的套接字的文件描述符
频道结束。 这个参数是必需的
--详细, -v : 将额外信息(包括版权声明)打印到 stderr。
--子过程, -s : 产生一个子进程。 您必须提供一个 命令 和 ARGS. 如果省略这个
标志,那么你必须 而不去 供应一个 命令 和 ARGS. 如果省略这个标志, 封装
将输入从 stdin 复制到 SCP 多路复用套接字中的传出通道并复制到
来自 SCP 多路复用套接字中的传入通道的标准输出。 如果你省略这个标志,所有的
输入和输出通道标志是非法的。
--infd n, -in : 指定输入通道。 如果有子进程,它将能够
从描述符中读取 n. 如果没有子进程 封装 将从其读取
描述符 n (这些是 SCP 通道的相反极性)。
--outfd n, -on : 指定输出通道。 如果有子进程,它将能够
写入描述符 n. 如果没有子进程 封装 将写入其描述符
n (这些是 SCP 通道的相反极性)。
--双工 n, -ion : 指定一个双向通道。 遥控器 封装 将发送
SCP SYN 数据包,本地将用 SYN 响应同一会话。 这
子进程将能够读写文件描述符 n. 子流程应该使用
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 下架(1) 程序是否必须关闭一个方向而离开另一个方向
打开。
--双工 n, -dn : 指定一个双向通道。 这 - 客户 结束 封装
连接发送 SCP SYN 数据包和 - 服务器 对同一个会话用 SYN 响应。
子进程将能够读写文件描述符 n. 子进程应该
使用 下架(1) 程序是否必须关闭一个方向而离开另一个方向
方向打开。
--双工 n, -oin : 指定一个双向通道。 本地的 封装 将发送
SCP SYN 数据包,远程将使用 SYN 响应同一会话。 这
子进程将能够读写文件描述符 n. 子流程应该使用
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 下架(1) 程序是否必须关闭一个方向而离开另一个方向
打开。
双向通道的所有长形式都有一个可选的 =SID 组件
可用于指定 SCP 会话 ID。 这在连接时不是很有用
封装到自身的另一个实例,但在连接到另一个实例时可能很方便
实现SCP的软件。
--首选本地, -l : 如果远程和本地子进程都以非零值退出
(错误的)代码, 封装 将以与本地子进程相同的代码退出。 本篇
is 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 默认。
--首选远程, -r : 如果远程和本地子进程都以非零值退出
(错误的)代码, 封装 将以与远程子进程相同的代码退出。
--仅限本地, -L : 封装 以本地状态退出并忽略远程状态。
--仅远程, -R : 封装 以远程状态退出并忽略本地状态。
SESSION 标识 AND 子过程 通道
为子进程指定通道时,标志的顺序非常重要。
每一面旗帜都给当地 封装 遥控器上必须有相应的标志
封装 这是在完全相同的位置(在频道列表中)。 描述符
编号不需要对应,但每个通道的位置和类型必须对应。
一个可悲的复杂因素是 --infd 和 --outfd 旨在
指定子流程时不同。
本地远程
--infd 带子进程 --outfd 带子进程
--infd 带子进程 --infd
--infd --infd 带子进程
--infd --outfd
--outfd 带子进程 --infd 带子进程
--outfd 带子进程 --outfd
--outfd --outfd 带子进程
--outfd --infd
--双工 --双工
--双工 --双工
--双工 --双工
正确的:
l$ 封装 --infd 0 --duplex 5
r$ 封装 --outfd 1 --DUPLEX 5
错误的:
l$ 封装 --infd 0 --duplex 5
r$ 封装 --outfd 1 --duplex 5
--双工 必须有对应的 --双工 在远端。
l$ 封装 --infd 0 --duplex 5
r$ 封装 --DUPLEX 5 --outfd 1
--infd 必须有对应的 --outfd 在远端。 它出问题了,而且
信道分配不正确导致协议错误。
如果您了解源代码 封装,您可以违反这些准则,但是
这是不必要的、容易出错的和不明智的; 此外,你并不真正了解
源代码。 不要这样做。
客户 -VS- 服务器
SCP 具有隐含的极性。 一端是服务器,另一端是客户端。
您可以指定哪一端使用 - 客户 和 - 服务器. 如果不指定
一,然后 封装 会比较socket两端的地址(指定
- --fd) 并使用确定性算法选择一个作为服务器和一个作为
客户端。 如果socket的远程地址与远程地址不对应
封装 (例如,数据包通过插入的网关转发,地址
被伪装,或以其他方式被两端不一致地感知)然后
该算法很有可能“失败”并将两者都分配给服务器或同时分配给
成为客户。
你应该让的唯一一次 封装 在客户端和服务器之间进行选择
互动情况。 一个软件系统很可能围绕 封装
将在自动极性分配失败的情况下重新使用。
示例
这是一个简单的文件传输守护进程:
服务器 $ 水龙头 3001 --once --fd3 \
sh -c '同时 〜/src/netpipes4.0/封装 --fd 3 -so5i4 \
sh -c "fname=`cat 0<&4`; echo \$fname; cat < \$fname 1>&5"; \
做真实的; 完毕'
客户端 $ 软管服务器 3001 --retry 10 --delay 1 --fd3 \
sh -c '同时读取 fname; 做 \
〜/src/netpipes4.0/封装 --fd 3 -si4o5 \
sh -c "echo $fname 1>&5; exec 5>&-; cat 0<&4" \
|| 休息; 完毕'
只需在软管中输入要检索的文件的名称,然后按回车键即可。 它
将被转储到标准输出。 重复直到开悟或无聊。
故障排除
您指定了吗 - 客户 和 - 服务器 适当地? 一侧应该是服务器,另一侧
应该是客户端如果您将它们都指定为服务器或都指定为客户端,则您已经创建了一个
错误。 不要依赖自动极性检测。 虽然它在理论上是一个
很好的算法,很容易上当。
完成所有频道分配(--infd 等)匹配? 如果你弄错了这些
封装 会吓坏并在你的鞋子上滴水。
为避免死锁,请确保在不需要时关闭通道
了。 在 sh 或 bash 中使用 >&- 重定向运算符。 确保全部关闭
后台进程也是如此。
无法从以 & 为背景的进程中读取标准输入? Bash 关闭文件
任何后台子进程的描述符 0(例如 (command&) )。 你可以得到
通过将 0 复制到另一个描述符上,然后将其复制回
后台进程。
( ( 猫 0<&3 ) & ) 3<&0
使用onworks.net 服务在线封装