Reentrant Function

What is Reentrant Function?

一個 function 是 reentrant function 代表說他可以安全的被 interrupt

  • 假設我們正在跑 Function A 然後突然被 signal interrupt 並且去跑 signal handler 並且這個 signal handler 也呼叫了一次 Function A
  • 如果 Function A 是 reentrant function 那麼等 handler 結束繼續跑 Function A 時一且的資料就會是正常的並且不會造成邏輯混亂

What will cause non-reentrant function?

  • static data
  • return pointer to static data
  • call malloc() or free()
  • use standard I/O library
  • use POSIX.1 system database functions (e.g. getgrgid(), getgrnam(), etc)
  • call non-reentrant function