#navi_header|Erlang| BIFsの erlang:processes/0 はPidのリストを返す。また、erlang:process_info/1 はPidを引数に取りプロセス情報のタプルのリストを返す。 lists:map()を使えば全Pidのプロセス情報のリストを取得できる。 #pre||> 1> lists:map(fun erlang:process_info/1, erlang:processes()). [[{registered_name,init}, {current_function,{init,loop,1}}, {initial_call,{otp_ring0,start,2}}, {status,waiting}, {message_queue_len,0}, {messages,[]}, {links,[<0.4.0>,<0.5.0>,<0.2.0>]}, {dictionary,[]}, {trap_exit,true}, {error_handler,error_handler}, {priority,normal}, {group_leader,<0.0.0>}, {total_heap_size,1364}, {heap_size,987}, {stack_size,2}, {reductions,2786}, {garbage_collection,[{fullsweep_after,65535},{minor_gcs,3}]}, {suspending,[]}], ... ||< Pidも戻してみたいので、次のようにしてみる。 #pre||> 1> lists:map(fun(X) -> {X, erlang:process_info(X)} end, erlang:processes()). [{<0.0.0>, [{registered_name,init}, {current_function,{init,loop,1}}, {initial_call,{otp_ring0,start,2}}, {status,waiting}, {message_queue_len,0}, {messages,[]}, {links,[<0.4.0>,<0.5.0>,<0.2.0>]}, {dictionary,[]}, {trap_exit,true}, {error_handler,error_handler}, {priority,normal}, {group_leader,<0.0.0>}, {total_heap_size,1364}, {heap_size,987}, {stack_size,2}, {reductions,2786}, {garbage_collection,[{fullsweep_after,65535},{minor_gcs,3}]}, {suspending,[]}]}, ... ||< なおerlang:process_info/1はデバッグ用途にのみ使ってね、という記述がある。 通常用途ではerlang:erlang:process_info/2を使って、どの情報を取得するか明示的に指定する。 1> erlang:process_info(list_to_pid("<0.29.0>"), status). {status,running} 2> erlang:process_info(list_to_pid("<0.29.0>"), [status, memory]). [{status,running},{memory,142044}] なおerlang:list_to_pid/1もデバッグ用途orErlang内部限定であり、一般アプリでは使うべきではない、との警告がリファレンスマニュアルには記載されている。 #navi_footer|Erlang|