危険なインタフェースをもつ多くの関数には、「MT-安全」な代替関数が用意されています。「MT-安全」なルーチンの名前は、安全でないルーチンの名前の末尾に「_r」が追加された形式になっています。たとえば、asctime() の「MT-安全」なバージョンは asctime_r() です。表 7–2 に、Solaris 環境に用意されている「_r」ルーチンを示します。
表 7–2 再入可能な関数
asctime_r(3c) |
gethostbyname_r(3nsl) |
getservbyname_r(3socket) |
ctermid_r(3c) |
gethostent_r(3nsl) |
getservbyport_r(3socket) |
ctime_r(3c) |
getlogin_r(3c) |
getservent_r(3socket) |
fgetgrent_r(3c) |
getnetbyaddr_r(3socket) |
getspent_r(3c) |
fgetpwent_r(3c) |
getnetbyname_r(3socket) |
getspnam_r(3c) |
fgetspent_r(3c) |
getnetent_r(3socket) |
gmtime_r(3c) |
gamma_r(3m) |
getnetgrent_r(3c) |
lgamma_r(3m) |
getauclassent_r(3bsm) |
getprotobyname_r(3socket) |
localtime_r(3c) |
getauclassnam_r(3bsm) |
getprotobynumber_r(3socket) |
nis_sperror_r(3nsl) |
getauevent_r(3bsm) |
getprotoent_r(3socket) |
rand_r(3c) |
getauevnam_r(3bsm) |
getpwent_r(3c) |
readdir_r(3c) |
getauevnum_r(3bsm) |
getpwnam_r(3c) |
strtok_r(3c) |
getgrent_r(3c) |
getpwuid_r(3c) |
tmpnam_r(3c) |
getgrgid_r(3c) |
getrpcbyname_r(3nsl) |
ttyname_r(3c) |
getgrnam_r(3c) |
getrpcbynumber_r(3nsl) | |
gethostbyaddr_r(3nsl) |
getrpcent_r(3nsl) |