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>
我想這也需要實現。