Open4
WasmLinux: ブラウザ用に簡易telnetクライアントの製作
いろいろ考えたけど、とりあえず stdin
stdout
stderr
はPTYにあげて、WasmLinux側のdebug printを別のロジックに移すほうが簡単なので、telnet実装はxterm-pty https://github.com/mame/xterm-pty を前提にC言語側で用意することにした。
xterm-ptyはEmscriptenをパッチして標準入出力をのっとる実装になっていて、TTY側のfdを変更できない。
xterm-ptyの仕様調査
xterm-pty (xtermjs-pty じゃないのか。。) の仕様は特に明記されていないようだ。というわけでコードを呼んで何をサポートしているのかを確認する。
シグナル類
SIGINT
SIGQUIT
SIGTSTP
SIGWINCH
。内部では _raise
しているだけ。なのでemscriptenのランタイム側に受信方法がある。。はず。
Emscriptenのテストには sigaction
が普通に存在するので、とりあえずこれで受信する方向で。。
tcsetattr
/ tcgetattr
要は termios
構造体の読み書きをPOSIX APIで行えるようだ。
これと ioctl
の TIOCGWINSZ
に対応している。
動いた
後はコレをemscriptenに持っていけば良いな。 ... いや、ローカル通信専用のminiioバックエンドを作る必要があるか。