なぜ golang に移植したかというとまあ以下のような理由です。 https://github.com/tokuhirom/jailingo/ capabilities で制御したかった jailing は perl で記述されているために、setuid/setcap などで制御することが難しい 今時 suid-perl 使うのもなあ、という。 C で書くと getopt の処理とかだるい C++ で書くと、ビルドとかで悩むのがめんどい golang は segv しにくくて楽 golang で記述することにより、良い面もあるが一方で、普通に golang で記述すると、clone() したあとに処理を挟むことができないので、CLONE_NEWPID | CLONE_NEWNS とかしたあとに mount したいという要望が叶えられない。ので、いったん /proc/self/exec を