Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96356
  • 博文数量: 38
  • 博客积分: 1640
  • 博客等级: 上尉
  • 技术积分: 415
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-25 08:02
文章分类

全部博文(38)

文章存档

2011年(5)

2010年(19)

2009年(14)

我的朋友

分类: LINUX

2010-01-22 17:41:40

文件操作与时间函数

系统调用主要有以下几个:

1.打开文件或设备
#include
#include
#include
int open(const char *path, int oflags);
int open(const char *path, int oflags, mode_t mode);
//open建立了一条到文件或设备的访问路径,oflags用来定义打开文件所采取的动作

#include         //必须最早出现
2.从打开的文件或设备里读数据
size_t read(int fildes, void *buf, size_t nbytes);
//返回读到的字节数

3.向文件或设备写数据
size_t write(fildes, const void *buf, size_t nbytes);
//把缓冲区buf的前nbytes个字节写入与文件描述符fildes关联的文件中。返回实际写入的字节数。

4.关闭文件或设备
int close(int fildes);

5.把控制信息传递给设备驱动程序
int ioctl(int fildes, int cmd, ...);

#include
6.用它来设置文件的下一个读写位置。
off_t lseek(int fildes, off_t offset, int whence);
//返回从文件头到文件指针被设置处的字节偏移植

7.fstat,stat,lstat//返回与打开的文件描述符相关的文件的状态信息

8.dup,dup2//复制文件描述符


系统调用的缺点:1.系统调用会影响系统性能
2.硬件会对底层系统调用一次所能读写的数据块做出一定的限制
所以,我们一般用标准I/O

#include
FILE *fopen(const char *filename, const char *mode);
size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream);
int fclose(FILE *stream);
int fflush(FILE *stream);//把文件流里的所有未写出的数据立刻写出
int fseek(FILE *stream, long int offset, int whence);

测试程序的运行时间,微秒级
#include
int gettimeofday(struct timeval *tv, struct timezone *tz);//获取程序当前时间
struct timeval
{
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};
struct timezone
{
    int tz_minuteswest;     /* minutes west of Greenwich */
    int tz_dsttime;         /* type of DST correction */
};

以下用random()函数来产生5000个随机数,存进randnum.txt文本中

#include
#include

int main()
{
    int i=0,num[5000],x[5000];
   
    FILE *random_num;
   
    for(i=0;i<5000;i++)
    {
        num[i]=random()%1000;
    }
   
    random_num=fopen("/root/program/random/randnum.txt","r");   
   
    printf("产生随机数\n");
   
    fwrite(num,4,5000,random_num);

    fclose(random_num);

    return 0;
}

阅读(420) | 评论(0) | 转发(0) |
0

上一篇:hello.c遇到文件权限的问题

下一篇:ascall码

给主人留下些什么吧!~~