glibcのsleep()の実装がどうなっているのか知りたくて、 ソースを眺めていました。 https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/posix/sleep.c すると if (__nanosleep (&ts, &ts) < 0) と、__nanosleep()の2つの引数に同じアドレスを与えています。 ここで不安になってきました。
__nanosleep()の2引数に同じアドレスを与えても、問題ないのでしょうか? 例えばstrcpy(s, s)と同じsを与えたら未定義の動作になりますよね。 同じような問題が__nanosleep()で起きたりしないのでしょうか?
今まで問題になったことが無いのだから、害は無いのでしょうが、 モヤモヤするのでお伺いします。
深追いしてみたのですが、 https://sourceware.org/git/?p=glibc.git;a=blob;f=posix/nanosleep.c https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/clock_nanosleep.c このあたりでどう読んで良いのかわからなくなってきました。 https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysdep.h