Hello, Worldに潜むバグ 67
Hello,-World 部門より
プログラミングの第一歩としてお馴染みの課題であるHello, Worldであるが、これをANSI-Cに基づいてmainの戻り値をEXIT_SUCCESSマクロで記述し、出力をENOSPCエラーを返す疑似デバイスファイルである/dev/nullへリダイレクトさせるよう実行すると正常終了するというバグがあるようだ。
(https://blog.sunfishcode.online/bugs-in-hello-world/)
C言語以外でもJava、Haskell、Node.js、Ruby、およびPython 2では同様の動作であるが、Python 3、Perl、およびBashでは正しくエラーとなるとのことである。
Linuxでは/dev/fullの存在はお馴染みとなっているがBSD系では2014年にFreeBSD 11.0-CURRENTが、2018年にNetBSD 8が/dev/fullを追加しているようだ。
こうしたANSI-Cに比べれば追加されて日が浅い機能である/dev/fullがバグを顕在化させた側面もあるのだろうか?
豊富な実務経験を持つスラド諸兄から本件の「バグ」についてご意見を頂戴したいところである。