In solaris when I attached dbx to one of the running stacks, I found the call to fwrite leading to __lll_lock_wait()?
In what scenario will this happen? Does fwrite internally tries to acquire a lock?
In solaris when I attached dbx to one of the running stacks, I found the call to fwrite leading to __lll_lock_wait()?
In what scenario will this happen? Does fwrite internally tries to acquire a lock?
the standards that I looked through (C99 and POSIX) do say nothing about locked or unlocked IO concerning
fwrite
.On my linux system their is a not very precise mentioning of locking in the
man
page:and effectively, there is a
fwrite_unlocked
function. Standard unlocked functions in POSIX are onlygetc_unlocked()
,getchar_unlocked()
,putc_unlocked()
, andputchar_unlocked()
.My interpretation is that probably all buffered IO in the man(3) set is locked, and that you only have very few standardized interfaces to do unlocked IO.
That these things lock between threads is really a good thing since otherwise you could have completely messy output when several threads write to
stderr
, e.g.