標準出力2

キーボード入力と標準入力の関係を考えたら頭が痛くなった。
仕事でちょっと頭を使うので消耗したか?


こういうときは簡単そうな標準出力から改めて考え直そう。
プロセスの起動時に、プロセスを起動した人が標準出力を決めればよさそうと言うのが昨日までのお話。


プロセスの起動はシステムコールが用意されている

typedef struct {
    byte* image;
    dword size;
    dword entrypoint;
    const char* path;
    const char* name;
    CommandOption* list;
} LoadProcessInfo;
int syscall_load_process_image(LoadProcessInfo* info)

なのでこのLoadProcessInfo構造体に標準出力という項目を増やしてあげればよい気がする。
でもちょっと考えるとこれはMona的にはうれしくない。
実際の出力を行なうのは、ファイルサーバーだったり、GUIシェルサーバだったりするので
プロセス⇔標準出力先の対応情報をもっているのはどこかのサーバーの方が良い気がするのだ。


そうなるとプロセスの生成を司るプロセスサーバーがプロセス生成時に、ファイルサーバーなどに
プロセス⇔標準出力先の対応情報を登録するのが筋なのではないかと思ってしまう。


こんな感じ?

  1. プロセスがprintf("Hello\n");
  2. monapiライブラリのprintf内で、ファイルサーバーにMSG_STDOUTヘッダで文字列を送信
  3. ファイルサーバーはメッセージのfromメンバを参照しプロセス⇔標準出力先の対応情報から標準出力先のサーバーを探し出す。
  4. ファイルサーバーはMSG_STDOUTヘッダで文字列を出力先のサーバーへ送信


これでちょっと頭を冷やしてあとで見直してみるかなぁ。