cloneの引数
スレッド? -プロセス間で共有できるメモリの使い方を教えてください。- C言語・C++・C# | 教えて!gooで触れられているとおりcloneの引数にSIGCHLDを付け加えることで親がwaitしてやることができるようになる。これはman cloneにも載っていなくて俺はわざわざglibcのソースをgrepした。
あと今困っているのは親がリダイレクトしても子の標準出力がちゃんと修正されないこと。これだとデバッグが面倒だ。現在の引数は
clone(psm_clone_hook, stack+STACK_SIZE, CLONE_FS | CLONE_FILES | CLONE_SYSVSEM | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | CLONE_PTRACE | SIGCHLD | 0, *arg, *pid, *tls, *ctid);
みたいな感じで、CLONE_FILESしたらいいんじゃないの?とか思ってるけどうまくいかない。
あと困ってることで、共有メモリの中身を見てwhileでビジーループするバカみたいなプロセスを立ち上げたんだけど、どうも中身を真面目に見ていないようだ。明示的にフラッシュする命令とかが欲しい。それで解決するかは微妙だが。