質問・報告の内容
pty: 1 かつ out_io と err_io が file または null の設定でジョブを起動すると、ジョブが即座に終了する。
vim --clean
call term_start('sleep 10', {'out_io':'null', 'err_io':'null'})
OSの種類/ディストリ/バージョン
unix系OS
原因
channel の out と err が両方とも閉じられると、その後 in も閉じられる。
out_io と err_io が file または null のとき、これらのfdは直接ジョブのプロセスにつながる (Vimはハンドリングしない) ので、channel の out と err はどちらも閉じられた状態で起動する。
よって、すぐ in が閉じられるが、in が pty のときは in はプロセスの制御端末であるため、閉じた時点でカーネルからプロセスにSIGHUPが送られる。
質問・報告の内容
pty: 1かつout_ioとerr_ioがfileまたはnullの設定でジョブを起動すると、ジョブが即座に終了する。vim --cleanOSの種類/ディストリ/バージョン
unix系OS
原因
channel の out と err が両方とも閉じられると、その後 in も閉じられる。
out_ioとerr_ioがfileまたはnullのとき、これらのfdは直接ジョブのプロセスにつながる (Vimはハンドリングしない) ので、channel の out と err はどちらも閉じられた状態で起動する。よって、すぐ in が閉じられるが、in が pty のときは in はプロセスの制御端末であるため、閉じた時点でカーネルからプロセスにSIGHUPが送られる。