Linux 下实现两个管道双向数据流
原文地址:http://www.wangzhongyuan.com/archives/488.html
以下是一个Linux/Unix下由两个管道提供双向数据流的C程序,这是操作系统课程中经常使用的基本程序
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <string.h>
int main()
{
int fd1[2],fd2[2],cld_pid,status;
char buf[200], len;
if (pipe(fd1) == -1) // 创建管道1
{
printf("creat pipe1 error\n");
exit(1);
}
if (pipe(fd2) == -1) // 创建管道2
{
printf("creat pipe2 error\n");
exit(1);
}
if ((cld_pid=fork()) == 0) //子进程
{
close(fd1[1]); // 子进程关闭管道1的写入端
close(fd2[0]); // 子进程关闭管道1的读出端
//子进程读管道1
len = read(fd1[0],buf,sizeof(buf));
printf("\n这是在子进程:子进程从管道1中读出的字符串 -- %s",buf);
//子进程写管道2
strcpy(buf,"子进程写入管道2的字符串");
write(fd2[1],buf,strlen(buf));
printf("\n这是在子进程:子进程成功写入如下语句:%s\n",buf);
exit(0);
}
else //父进程
{
close(fd1[0]); // 父进程关闭管道1的读出端
close(fd2[1]); // 父进程关闭管道2的写入端
//父进程写管道1
strcpy(buf,"父进程写入管道1的字符串");
write(fd1[1],buf, strlen(buf));
printf("miaojing\n");
//父进程读管道2
len = read(fd2[0],buf,sizeof(buf));
printf("\n这是在父进程:父进程从管道2中读出的字符串 -- %s\n",buf);
exit(0);
}
}
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
MEMCACHED安装
一、服务端。先安装libevent,再安装memcached。(注:libevent是一套跨平台的事件处理接口的封装,能够兼容包括:Windows/Linux/BSD/Solaris等操作系统的事件处理)
1、下载最新版本的libevent和memcached,笔者的安装目录为/soft
>cd /soft
>wget http://www.dange.com/memcached/dist/memcach ......
Linux要安装mssql扩展,必须首先安装freetds,安装过程如下:
1、假设源文件目录为/webServ,安装目录为/opt/freetds。
1) >cd /webServ
2) 下载, >wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
3) 解压, >tar -zxvf freetds-stable.tgz
4) 进入, >cd freetds-0。 ......
RPM有5种基本操作模式(不包括软件包建构):安装、删除、升级、查询和校验。
RPM包的名称格式,eg:caleng-1.0-1.i386.rpm。该文件名包括软件包名称“caleng”;软件版本号“1.0“,其中包括主版本号和次版本号;"i386"是软件所运行的硬件平台。
1、安装RPM包,eg: $>rpm -ivh test.rp ......