Port drivers vs Ports

Thinus Pollard <>
Wed Aug 16 16:27:54 CEST 2006


Hi there

A Port runs in its own OS process, right? So you can stream data from one 
process to the other.

A Port Driver attaches itself to the erlang runtime system. After a few test I 
found that while the code inside the port driver is executing, the erlang 
runtime system is hanging, waiting for the port driver to return. It makes 
sense to me at least, please correct me if I'm wrong.

This would imply that I can't stream data from the port driver to erlang, 
since it is the same os process and while the port driver is streaming, the 
erlang part of the process can't accept the data, since it's blocked. 
Correct?

When I do a driver_output(port, &result, length_of_res), do the data get 
copied or does the erl_driver pass the result back in by reference?

Also, If I want to output back to erlang more than once during a call, does 
the messages (driver_output) get queued so that my erlang process can pick 
them up after the port driver has returned, or is it possible that they can 
get lost if I send to many messages?

Last Question: Which of the two communication methods are preferred / gives 
the best performance, erl_interface or communicating via character 
lists/arrays.

I need a port/port driver for connecting to a database.

Thanks in advance
Thinus



More information about the erlang-questions mailing list