Console ouput

Lennart Öhman lennart.ohman@REDACTED
Wed Oct 8 20:07:56 CEST 2003


Read the code of io.erl in stdlib and you will understand.

request(standard_io, Request) ->
     request(group_leader(), Request);
request(Pid, Request) when pid(Pid) ->
     Mref = erlang:monitor(process,Pid),
     Pid ! {io_request,self(),Pid,io_request(Request)},
     wait_io_mon_reply(Pid,Mref);
request(Name, Request) when atom(Name) ->
     case whereis(Name) of
	undefined ->
	    {error, arguments};
	Pid ->
	    request(Pid, Request)
     end.

Group leader is actully one of the few things which are inherited
in Erlang - from parent to spawned process.
In the IO context the group leader is simply used to identify who
handles standard_io for that process. You see that in the code above.
For instance calling io:format/2 causes a io_request message to
be sent to the process acting as its group-leader.

If you wish to send io to another particular process, just simply
use IO functions with a descriptor argument. By studying the io code
(as above) you see what messages to expect in the receiving process.

/Lennart


Inswitch Solutions - Erlang Evaluation wrote:

> 
>  
> If process P executes group_leader(GP, self(), all console ouput will be 
> sent to process GP?
> If not, how can I send all console ouput of a process to another process.
>  
>  
> Thanks,
> Eduardo Figoli
> INSwitch Solutions
>  
>  

-- 
-------------------------------------------------------------
Lennart Ohman                   phone   : +46-8-587 623 27
Sjoland & Thyselius Telecom AB  cellular: +46-70-552 6735
Sehlstedtsgatan 6               fax     : +46-8-667 8230
SE-115 28 STOCKHOLM, SWEDEN     email   : lennart.ohman@REDACTED




More information about the erlang-questions mailing list