Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1638760
  • 博文数量: 197
  • 博客积分: 10046
  • 博客等级: 上将
  • 技术积分: 1983
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-07 12:36
个人简介

在外企做服务器开发, 目前是项目经理, 管理两个server开发的项目。不做嵌入式好久了。

文章分类
文章存档

2011年(2)

2010年(6)

2009年(18)

2008年(30)

2007年(100)

2006年(41)

分类: LINUX

2007-09-28 12:45:31

【kernel基本功练习2】unix/Linux 低级IO函数的用法,必须掌握

写module ,必要的应用编程知识是应该要有的, 否则 ,怎么写应用程序来测试你的module或者driver呢?

而且最主要的是 , 了解上层调用的接口, 你就明白了上层的开发者需要什么, 自己才好实现什么。


把手里的看书的事情都放下, 先把 Unix环境高级编程这本书 的第三章 彻底搞熟它

内容包括:
open() ,尤其是各种常见的参数,到底是什么意思, 比如常用创建一个空文件: fd = open("/tmp/xx.txt",O_RDWR | O_CREAT | O_TRUNC);
读一个文件,         fd = open("/dev/hello",O_RDONLY );  
如果就是要写一个既有的文件, fd = open("/dev/hello",O_WRONLY );  

具体的参数: man 2 open

read(),
write()
ioctl()  ,这个最重要。
lseek() , 文件指针移动






比如下面的例子:

就是简单的读一个文件:

#include
#include
#include
#include

int main(int argc,char **argv)
{
        int fd = 0;
        int pid = 0;
        char buffer[20] = {'\0'};
        char *read_buffer[20] = {'\0'};

        //fd = open("/dev/hello",O_RDWR | O_CREAT | O_TRUNC);
        fd = open("/dev/hello",O_RDONLY ); //| O_NONBLOCK);
        printf("fd=%d\n",fd);
        if(fd < 0) {
                perror("/dev/hello");
                return -1;
        }

        read(fd,read_buffer,sizeof(read_buffer)-1);
        printf("read_buffer=%s\n",read_buffer);


        close(fd);

        return 0;
}





---

下面这个就是简单的写一个文件 ,
#include
#include
#include
#include

int main(int argc,char **argv)
{
        int fd = 0;
        int pid = 0;
        char buffer[20] = {'\0'};
        char write_buffer[20] = {'\0'};

        strcpy(write_buffer,"zhanglinbao");

        fd = open("/dev/hello",O_RDWR | O_CREAT | O_TRUNC);
        //fd = open("/dev/hello",O_RDONLY);
        printf("fd=%d\n",fd);
        if(fd < 0) {
                perror("/dev/hello");
                return -1;
        }

        write(fd,write_buffer,sizeof(write_buffer)-1);

        close(fd);

        return 0;
}
阅读(2556) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

lullaby20052008-07-24 17:21:59

char *read_buffer[20] = {'\0'}; 错了