關於erlang:halt的更新說明

摘自:http://www.erlang.org/download/otp_src_R15B01.readme

OTP-9985  == erts stdlib ==



     When an escript ends now all printout to standard output and
     standard error gets out on the terminal. This bug has been
     corrected by changing the behaviour of erlang:halt/0,1, which
     should fix the same problem for other escript-like
     applications, i.e that data stored in the output port driver
     buffers got lost when printing on a TTY and exiting through
     erlang:halt/0,1.


     The BIF:s erlang:halt/0,1 has gotten improved semantics and
     there is a new BIF erlang:halt/2 to accomplish something like
     the old semantics. See the documentation.


     Now erlang:halt/0 and erlang:halt/1 with an integer argument
     will close all ports and allow all pending async threads
     operations to finish before exiting the emulator. Previously
     erlang:halt/0 and erlang:halt(0) would just wait for pending
     async threads operations but not close ports. And
     erlang:halt/1 with a non-zero integer argument would not even
     wait for pending async threads operations.


     To roughly the old behaviour, to not wait for ports and async
     threads operations when you exit the emulator, you use
     erlang:halt/2 with an integer first argument and an option
     list containing {flush,false} as the second argument. Note
     that now is flushing not dependant of the exit code, and you
     can not only flush async threads operations which we deemed
     as a strange behaviour anyway.


     Also, erlang:halt/1,2 has gotten a new feature: If the first
     argument is the atom 'abort' the emulator is aborted
     producing a core dump, if the operating system so allows.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章