您的位置:首页 > 运维架构 > Linux

Linux 应用程序编程基础

2015-09-24 21:59 507 查看
一个计算机应用程序在内存中可以分成两个部分:存放代码的代码段和存放数据的数据段。代码段存放用户编写的代码;数据段存放栈和堆。

相关内存管理函数

#include <stdlib.h>

void *malloc(size_t size); //申请size大小的空间
void free(void *ptr); //释放ptr指向的空间

void *calloc(size_t nmemb,size_t size); //申请nmemb数量size大小的空间
void *realloc(void *ptr,size_t size); //重新分配ptr指向的空间大小为size

ANSI C文件管理
ANSI文件I/O库在stdio.h头文件中提供了如下两种设置缓冲的函数接口

#include <stdio.h>

void setbuf(FILE *fp,char *buf); //设置buf大小的缓冲
int setvbuf(FILE *fp,char *buf,int mode,size_t size); //理论上可以设置任意大小缓冲
文件操作

FILE *fopen(const char *path,const char *mode); //以mode方式打开path路径下的文件
int fclose(FILE * stream); //关闭文件很重要

int getc(FILE *stream);
int fgetc(FILE *stream); //功能相同,从文件流读取一个字符
int getchar(void); //从stdin读取一个字符

int putc(int c,FILE *stream);
int fputc(int c,FILE *stream); //功能相同,输出到文件流一个字符
int putchar(int c); //输出到stdout一个字符

char *fgets(char *s,int size,FILE *stream); //从文件流读取size大小
char *gets(char *s); //读取一行,由于会造成缓存溢出不建议使用

int fputs(const char *s,FILE *stream); //向文件流输出一行
int puts(const char *s); //输出一行

size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
//块状读取,从文件流读取nmemb块size大小
size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
//块状输出,向文件流输出nmemb块size大小

int fseek(FILE *stream,long offset,int whence);
//文件流定位到指定位置偏移offset,whence为解释offset
//SEEK_SET文件开始 SEEK_CUR当前位置 SEEK_END文件末尾
long ftell(FILE *stream); //返回文件流当前读写指针位置
void rewind(FILE *stream); //把读写指针定位到最开始

POSIX可移植操作系统接口文件I/O编程
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *pathname,int flags); //以flag方式打开文件
int open(const char *pathname,int flags,mode_t mode); //mode为权限
int creat(const char *pathname,mode_t mode); //一般open函数会自动创建

#include <unistd.h>

int close(int fd); //关闭文件
ssize_t write(int fd,const void *buf,size_t count); //向文件写入buf的count个字符
ssize_t read(int fd,void *buf,size_t count); //从文件读取count个字符到buf

#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fildes,off_t offset,int whence); //设置文件流读取指针偏移量

#include <unistd.h>
#include <fcntl.h>
int fcntl(int fd,int cmd); //改变已经打开的文件性质功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  汇编 linux