open/read/write (终于写的长了一点。。。)

原创 2007年09月18日 21:05:00
http://wiki.ubuntu.org.cn/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh-cn
很有用的帮助查询网站,中文化的,很方便,站在前人的肩膀上,容易很多,嘿嘿。
编程第一步就是装编译器。。linux一般都默认装好gcc的,可ubuntu下,必须装build-essential
$ sudo apt-get install build-essential
ubuntu的东西很依赖网络,除非你用的是dvd源。。可能是老外认为电脑就应该是连着网络的。。
装了这个,顺点IDE,推荐 anjuta ,KDevelop 这个个工具,后者的字体不知道怎么改,太小了,我看不大清。。所以用前者了。
关于文件操作的一组系统调用,
#include <fcntl.h> //用于flags的宏定义
int open( char *filename, int flags) ;
int open ( char *filename ,int flags, mode_t mode) ;
宏为:    O_RDONLY(只读) ,O_WRONLY, O_CREAT,等
函数返回-1表示调用失败,可能是不存在此文件阿,没权限啥的
包含errno.h  用strerror(errno) 返回错误信息,很方便
int read (int fd , void *buf, int len);
len为欲读取的字节数,
返回实际读取的字节数,buf是一个缓冲区,不能太小
int write( int fd, void *buf,int len);
关闭文件
int close( int fd);
我按书上提示编了个读取文件的小程序,简单版cat
#include <stdio.h>
#include 
<fcntl.h>
#include 
<errno.h>
int main(int argc, char *argv[] )
...{
        
int fd,k,i,len;
        unsigned 
char buf[512] ;
        
for (k=1; k< argc; k++)
        
...{
                fd 
= open(argv[k] , O_RDONLY);
                
if ( fd == -1 )
                
...{
                        fprintf(stderr,
"can't open the file,%s ",strerror(errno) ); 
                         
continue;
                }

                
while ( len = read (fd,buf,sizeof(buf) >0 ) )
                
...{
                        
for ( i=0;i<len;i++)
                                printf(
"%c" ,buf[i] );
                }

                
if(len<0)
                        perror(
"read data");
                close(fd);
        }

        printf(
" ");
        
return 0;
}



gcc编译不带指定outfile的话他会产生一个 .o 的输出,我不知道怎么把.o的东西转成可执行文件,所以只能gcc fr.c -o fr
效果还不错,当然这是最最简单的。。。


编译的时候我还发现个有趣的现象,就是你mkdir source 这个存放源代码的目录,可是当你cd source时却cd不进去,
aca@aca-desktop:~$ ls
Desktop  Examples  rf  rf.c  source   未命名文件夹
aca@aca
-desktop:~$ cd source
bash: cd: source: No such file or directory


  我想了下,source应该是条命令,因为单独输入source

bash: source: 此处需要文件名作参数
source: usage: source filename [arguments]

可不知道怎么让bash 让他只认为是cd 的参数,应该有什么类似转义的东西,可是我暂时没找到,最近不知道为什么老咳嗽。。明天强台风学校不想去了,淋湿了以后很容易就感冒了,而且学校里学不到什么,其他学校都停课的。。就当给自己放假了。。

mmap与直接IO(read、write)的效率比较

不能简单的说哪个效率高,要看具体实现与具体应用。无论是通过mmap方式或read/write方式访问文件在内核中都必须经过两个缓存:一个是用address_space来组织的以页为基础的缓存;一个是以...
  • qq_15437667
  • qq_15437667
  • 2017年05月15日 00:12
  • 378

Linux C read、write、creat、open等函数应用实例

Linux C文件循环读取,循环写入,文件拷贝,文件操作
  • wangyuchun_799
  • wangyuchun_799
  • 2015年07月20日 22:44
  • 4840

对应于Linux中open, read, write, seek, close的windows API

文件的打开 FILE *fopen( "路径+文件名","读写模式"); FILE *fopen(const char *filename, const char *m...
  • wangjingfei
  • wangjingfei
  • 2009年10月28日 15:02
  • 4044

文件I/O函数(open,read,write,lseek,close)

大多数unix文件I/O只需要用到5个函数:open,read,write,lseek,close。这些函数都为不带缓存的I/O,不带缓存指的是每个read和write都调用内核中的一个系统调用。这些...
  • jiangqin115
  • jiangqin115
  • 2015年05月02日 12:28
  • 1035

Linux C flie操作: open write read lseek close函数分析

Linux C file操作: open write read lseek close函数分析
  • renlonggg
  • renlonggg
  • 2017年01月19日 11:35
  • 969

C语言open,read,write函数,及文件读写

open 头文件:#include    #include    #include 定义函数:     int open(const char * pathname, int flags); ...
  • ly52352148
  • ly52352148
  • 2016年10月20日 16:39
  • 6899

file operate in python (open write read close )

1. file open:     fd = open(N1,N2):N1:path of the file to be open like '/home/warrior/Downloads/tes...
  • warrior_zhang
  • warrior_zhang
  • 2016年01月12日 13:01
  • 418

linux驱动学习笔记1(简单实现open,read,write,ioctl)

以前开发过程中用过无数次的ioctl函数,一直不知道其内部如何实现的,最近正好在看这方面的资料,并结合网上的代码做了实践,这里记录下。 首先编辑一个驱动模块,取名demo.c #include #i...
  • taotaost
  • taotaost
  • 2017年08月02日 18:33
  • 503

python 3-5-1 关于文件的操作-open/read/readlines/seek/write/writelines

关于文件的操作f = open(“test.sh”) f是一个可迭代对象 readlines() 方法是将文件的所有内容放进列表中,如果文件非常大,内存消耗是个极大的问题 readline() 既...
  • u013679490
  • u013679490
  • 2017年01月16日 18:33
  • 578

not an error (code 0): Could not open the database in read/write mode.的解决办法

问题 :在项目中,运行到在SD卡创建数据库时遇到了标题所述的错误 原因方面可以看以下这篇文章 http://lifehacker.com/android-kitkat-blocks-some-ac...
  • hemezo
  • hemezo
  • 2015年05月12日 18:01
  • 1606
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:open/read/write (终于写的长了一点。。。)
举报原因:
原因补充:

(最多只允许输入30个字)