Aros/开发者/文档/设备/控制台
应该有 Shell 支持 “_pchar” 和 “_mchar” 变量。如果可以添加 “_pchar” 和 “_mchar” 支持,那么可以添加 C:Pipe 命令来支持它。此外:Open("PIPE:*",...) 现在打开一个自动命名的管道。
使用 NameFromFH() 获取其对面的名称。例如,实现类似于 Unix pipe() 调用。
BOOL Pipe(BPTR pipe[2]) { char buff[64]; pipe[1]=Open("PIPE:*", MODE_NEWFILE); if (pipe[1]) { char buff[64]; if (NameFromFH(fh_write, buff, sizeof(buff)) != 0) { pipe[0] = Open(buff, MODE_OLDFILE); if (pipe[0]) return DOSTRUE; } Close(pipe[1]); } return DOSFALSE; }
我进行了一些尝试,但 AOS “_mchar” 似乎有些奇怪(OS3.9+BB2)。
设置 “_mchar” 和包含 “_mchar” 字符的命令行:PIPE 被插入为命令(就像 “_pchar” 一样)。即使包含 “_mchar” 的单个 Shell 行也会运行 PIPE。
我甚至没有 C:PIPE,所以我只得到了 PIPE 未找到错误...这应该如何工作?
这意味着实际上是 C:PIPE 处理 “_pchar” 和 “_mchar”,而不是 Shell?Shell 的唯一任务是检查命令行中是否找到 “_mchar” 或 “_pchar”,如果找到,则在命令开头插入 PIPE 吗?
我可以实现 Shell 更改,但我首先需要知道如何处理 “_mchar”。它依赖于新的 "PIPE:*" 自动命名管道功能,因此如果有人有兴趣将其移植回 ABI_V0,请记住这一点。
PIPE 似乎是一个 Shell 扩展,从未在 2.0 中完全完成,并在后续版本中被遗忘。
我注意到 C:Type 和 C:Sort 无法以标准输入作为输入。
<snip> 1> 管道列表:SYS: NOHEAD | Sort IN: OUT: | More
请注意 Sort 需要 `IN:' 和 `OUT:'。这些设备实际上不存在,但 Pipe 命令使用 PIPE: 模拟它们。这是必需的,因为 C:Sort 无法使用 "标准 IO",而坚持使用文件。</snip>
我想这也需要实现。