[erlang-questions] Flush "stdout" buffer

PAILLEAU Eric <>
Sat Sep 2 12:26:07 CEST 2017


Hi,

 From Erlang perspective, you can get the message queue length of io 
server handling your write.
io servers are erlang processes consuming an io messages queue.

To do so, you need to get the group leader pid of the writing process.

_______________________________________________
group_leader() -> pid()

Returns the process identifier of the group leader for the process 
evaluating the function.

Every process is a member of some process group and all groups have a 
group leader. All I/O from the group is channeled to the group leader. 
When a new process is spawned, it gets the same group leader as the 
spawning process. Initially, at system startup, init is both its own 
group leader and the group leader of all processes.
_______________________________________________

then you can ask the number of messages still in queue of group leader, 
using

  erlang:process_info/2 + message_queue_len


note that it is not however a guarantee that all data was flushed if 
message queue = 0, because last one message maybe currently being 
treated, and as other mentionned, you don't have control on what 
underlaying OS is doing low level.



>>
>> Hmmm ... So If i understand it well, we've no control on that after all.
>> The data can still be buffered on the kernel side.


More information about the erlang-questions mailing list