- 论坛徽章:
- 0
|
文件操作与时间函数
系统调用主要有以下几个:
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=random()%1000;
}
random_num=fopen("/root/program/random/randnum.txt","r");
printf("产生随机数\n");
fwrite(num,4,5000,random_num);
fclose(random_num);
return 0;
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/104319/showart_2157967.html |
|