`
mryufeng
  • 浏览: 987419 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

erlang内置的port相关的驱动程序

阅读更多
erlang能够利用多核心的优势不仅体现在多线程的smp调度器,更在port上面上体现。通过执行外部程序,接管它的输入输出, 实现了安全性和充分利用cpu计算资源。

erlang的io设计体现了unix一切以文件为中心的思想。在port设计上也是.这3个驱动程序都是把相关的东西转化成文件句柄,登记到poll上面,利用强大的IO poll来实现上层语义的整合。


ErlDrvEntry spawn_driver_entry;


{spawn, Command}
    Starts an external program. Command is the name of the external program which will be run. Command runs outside the Erlang work space unless an Erlang driver with the name Command is found. If found, that driver will be started. A driver runs in the Erlang workspace, which means that it is linked with the Erlang runtime system.
    When starting external programs on Solaris, the system call vfork is used in preference to fork for performance reasons, although it has a history of being less robust. If there are problems with using vfork, setting the environment variable ERL_NO_VFORK to any value will cause fork to be used instead.

ErlDrvEntry fd_driver_entry;

{fd, In, Out}
    Allows an Erlang process to access any currently opened file descriptors used by Erlang. The file descriptor In can be used for standard input, and the file descriptor Out for standard output. It is only used for various servers in the Erlang operating system (shell and user). Hence, its use is very limited.

ErlDrvEntry vanilla_driver_entry;

官方没有文档。它的作用是直接打开文件进行读写。
2
0
分享到:
评论
1 楼 mryufeng 2009-04-19  
5.21 ...write to standard error (stderr) on a unix system?

The simplest approach is to just open file descriptor two:

            P = open_port({fd,0,2}, [out]),
            port_command(P, "this text goes to stderr\n").
   

相关推荐

    erlang port driver test

    在 Erlang 中,Port Driver 是一种机制,允许 Erlang 进程与外部 C 库或者其他语言编写的程序进行通信。Port Driver 提供了一种方式,使得 Erlang 系统能够与外部世界交互,执行低级别的I/O操作或调用非Erlang代码...

    erlang -c语言程序接口.pdf

    在Erlang中,与C语言程序进行通信通常是通过端口(Port)机制来实现的。端口是Erlang提供的一种特殊机制,用于实现与外部程序的交互。下面详细介绍端口机制的工作原理: 1. **端口的创建** ```erlang YourPort = ...

    Erlang程序设计(第2版)1

    【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...

    mongodb-erlang:Erlang的MongoDB驱动程序

    `mongodb-erlang`是一个用于Erlang环境的MongoDB驱动程序,它允许Erlang应用程序与MongoDB数据库进行交互,提供了丰富的接口来执行各种数据库操作。 一、MongoDB-Erlang驱动程序介绍 `mongodb-erlang`驱动是Erlang...

    jamdb_oracle:适用于Erlang的Oracle数据库驱动程序

    适用于Oracle数据库的Erlang驱动程序和Ecto适配器 特征 使用准备好的语句功能。 使用绑定变量。 调用存储过程。 调用存储的函数。 使用游标变量。 使用返回子句。 更新批处理。 行预取。 入门 % % Set ...

    ErlSybase:用于 erlang 的 Sybase nif 驱动程序

    用于 erlang 的 Sybase nif 驱动程序从重写 用法 0.运行二郎erl ebin/ deps/*/ebin % %Start driver 1 > sybdrv : start ([]) % %Execute query with params 2 > sybdrv : execQueryWithArgs ( testdb , " select ...

    erlang 程序设计 源码

    9. **网络编程**:Erlang天生适合网络编程,因为其内置了对TCP、UDP等协议的支持,可以轻松创建分布式系统。 10. **并行性与分布式**:Erlang节点可以相互通信,形成分布式集群,这使得构建大规模分布式系统变得...

    erlang的mysql驱动接口

    连接MySQL服务器后,Erlang程序可以通过发送消息到对应的Erlang进程来执行SQL命令。当不再需要连接时,应关闭连接以释放资源。`dizzyd-erlang-mysql-driver` 提供了连接管理和断开连接的函数,确保了连接的生命周期...

    erlangB计算器

    在MATLAB中实现Erlang B计算器,可以利用其内置的数学函数和循环结构,将Erlang B公式转化为可执行的代码。Erlang B公式为: \[ B(N, \lambda) = \frac{\lambda N}{N + \lambda} \] 其中,N表示服务通道数,λ表示...

    pgsql:Erlang PostgreSQL驱动程序

    pgsql是Erlang编程语言中用于连接和操作PostgreSQL数据库的驱动程序。Erlang是一种功能强大的并发性编程语言,以其在分布式系统和高可用性应用程序中的出色性能而闻名。PostgreSQL则是一种开源的关系型数据库管理...

    couchbaserl:用 Erlang 编写的 Couchbase 驱动程序

    `couchbaserl` 是一个用 Erlang 实现的 Couchbase 客户端驱动程序,它允许开发者在 Erlang 应用程序中与 Couchbase 服务器进行通信,执行诸如存储、检索和管理数据等操作。下面我们将详细探讨 `couchbaserl` 的关键...

    头目:使用Jinterface和Asynchbase Java客户端查询数据库的ErlangElixir的HBase驱动程序

    潜水员使用和查询数据库的Erlang / Elixir HBase驱动程序。 Diver在启动时将Java服务器创建为,并将GenServer请求直接分派到在Java服务器上运行的HBaseClient 。 这些请求由HBase群集上的客户端异步执行,并且响应...

    ehbase:通过 Erlang Thrift 库的 Erlang HBase 驱动程序

    ehbase是通过 Erlang Thrift 库为 Erlang 提供的 HBase 驱动程序。 它正在开发分支下的开发过程中。 概括 在表面之下, ehbase使用 Erlang Thrift 库通过其 Thrift 网关连接到 HBase,该网关包含在标准 HBase 0.9x ...

    erlang 深度分析

    Erlang内置Port相关的驱动程序 - **概念**: Port驱动程序允许Erlang进程与外部程序进行通信。 - **实现**: 通过`erlang:open_port/2`函数创建一个Port。 - **应用场景**: 实现Erlang与C语言编写的程序之间的交互。 ...

    适用于Erlang的MongoDB驱动程序-C/C++开发

    这是Erlang的MongoDB驱动程序。 用法将此仓库添加为依赖项:钢筋{deps,[{mongodb,“。*”,{git,“ git://github.com/comtihon/mongodb-erlang”,{标签,“ <最新标签>”} }}]} Erlang.mk DEPS = mon这是...

    程序员为什么还要刷题-generic-linked-in-driver:用于接口Erlang和C的通用非阻塞链接驱动程序

    程序员常刷题Erlang 的通用链接驱动程序 这是尝试为 Erlang 和 C/C++ 程序之间的通信提供一个轻量级和干净的泛型实现。 它从头开始设计以支持多线程...驱动程序由两部分组成:Erlang 部分和 C 部分。 在 Erlang 端,驱

    erlang编程 Introducing Erlang

    Erlang的一大亮点是其内置的并发机制。它使用轻量级进程(Lightweight Processes, LWP)来实现并发,每个进程有自己的消息队列,通过消息传递进行通信。这种模型降低了同步的复杂性,提高了系统的可扩展性和容错性。...

    erlang 语言程序设计

    ### Erlang语言程序设计 #### 一、Erlang语言简介与重要性 Erlang是一种功能强大且灵活的编程语言,它最初由爱立信公司开发,旨在为电信系统提供高并发、分布式处理能力。随着时间的发展,Erlang不仅在电信领域...

    erlang mysql

    本压缩包文件包含的是 Erlang 连接 MySQL 的源码,这可能是一个 Erlang 驱动程序或应用程序,允许开发者在 Erlang 中编写代码以操作 MySQL 数据库。通常,这样的库会提供接口函数,用于执行 SQL 查询、插入、更新和...

    Erlang游戏程序学习完整PDF手册

    这份"Erlang游戏程序学习完整PDF手册"是一份全面介绍Erlang在游戏开发中应用的学习资料,包含了Erlang的基础知识、并发原理以及在游戏开发中的实践案例。 Erlang语言的设计理念源自于Ericsson公司为解决电信系统中...

Global site tag (gtag.js) - Google Analytics