一个计算机应用程序在内存中可以分成两个部分:存放代码的代码段和存放数据的数据段。代码段存放用户编写的代码;数据段存放栈和堆。

相关内存管理函数

#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 应用程序编程基础的更多相关文章

  1. 20191310李烨龙Linux C语言编程基础

    Linux C语言编程基础 任务详情 0. 基于Ubuntu或OpenEuler完成下面的任务(OpenEuler有加分) 1. 选择教材第二章的一节进行编程基础练习(2.10,2.11,2.12,2 ...

  2. linux下c编程 基础

    1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理 ...

  3. Linux Shell脚本编程-基础1

    概述:  shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...

  4. Linux shell脚本编程基础之练习篇

    shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash ] then echo "请输入一个参数& ...

  5. linux实践——内核编程 基础模块

    一.内核模块的概念 Linux模块(module)是一些可以作为独立程序来编译的函数和数据类型的集合.内核模块给我们带来的便利是模块本身并不被编译进内核文件,可在内核运行期间动态的安装或卸载.因为如果 ...

  6. Linux Shell脚本编程基础(11)

    实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shel编程语言具有普通编程 ...

  7. Linux socket网络编程基础 tcp和udp

    Socket TCP网络通信编程 首先,服务器端需要做以下准备工作: (1)调用socket()函数.建立socket对象,指定通信协议. (2)调用bind()函数.将创建的socket对象与当前主 ...

  8. Linux Shell脚本编程基础

    1. 脚本是一个包含一系列命令序列的文本文件,当运行这个脚本文件时,文件中包含的命令序列将得到执行. 2. 脚本主要由两部分组成:脚本解释器和命令序列 注:#!/bin/bash 指明脚本解释器为Ba ...

  9. 【linux高级程序设计】(第十三章)Linux Socket网络编程基础

    IP地址定义: struct in_addr{ __u32 s_addr; }; in_addr_t  inet_addr (__const char * __cp) :把点分十进制IP地址字符串转换 ...

随机推荐

  1. Linux0.11内核源码——内核态线程(进程)切换的实现

    以fork()函数为例,分析内核态进程切换的实现 首先在用户态的某个进程中执行了fork()函数 fork引发中断,切入内核,内核栈绑定用户栈 首先分析五段论中的第一段: 中断入口:先把相关寄存器压栈 ...

  2. (转)springboot应用启动原理(二) 扩展URLClassLoader实现嵌套jar加载

    转:https://segmentfault.com/a/1190000013532009 在上篇文章<springboot应用启动原理(一) 将启动脚本嵌入jar>中介绍了springb ...

  3. php面试专题---1、php中变量存储及引用的原理

    php面试专题---1.php中变量存储及引用的原理 一.总结 一句话总结: 查看变量的存储结构可以安装xdebug扩展,用xdebug_debug_zval()方法,不推荐使用memory_get_ ...

  4. php中class类文件引入方法汇总

    在项目中  总是会用到类文件引入的操作,在此简单总结下: 方法一: 使用  include,require,include_once,require_once. 其中:*_once  once意为曾经 ...

  5. PHP抓取远程图片到本地保存(如何把错误信息用text文件写入)

    最近在工作中需要开发了一个用户素材功能,里面需要将网上的各种图片素材进行本地化存储.于是在网上找了一些相关资料,并根据自身开发需要,整理了一下主要的逻辑代码. /** * PHP将网页上的图片攫取到本 ...

  6. Linux随笔 - Linux LVM逻辑卷配置过程详解[转载]

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  7. 发布delphi程序(build with runtime package)要带哪些文件?

    Delphi提供两种方式来编译你的程序:使用包或者是单独的exe 使用包,你可以使用如下方法设置: 项目选项(菜单project->options->Packages页), 在Runtim ...

  8. Hive SQL语法总结

    Hive是一个数据仓库基础的应用工具,在Hadoop中用来处理结构化数据,它架构在Hadoop之上,通过SQL来对数据进行操作. Hive 查询操作过程严格遵守Hadoop MapReduce 的作业 ...

  9. Linux操作系统(四)_部署MySQL

    一.部署过程 1.当前服务器的内核版本和发行版本 cat /etc/issue uname -a 2.检查系统有没有自带mysql,并卸载自带版本 yum list installed | grep ...

  10. js中Object.defineProperty()方法的解释

    菜菜: “老大,那个, Object.defineProperty 是什么鬼?” 假设我们有个对象 user ; 我们要给它增加一个属性 name , 我们会这么做 1 2 3 var user = ...