【课程笔记】

Linux环境限制

遵循规范,使用现有资源,明确系统限制,增量开发。

(1)规范问题

编码的规范,让程序更易读。Linux编码规范。

“见着如意”:变量,函数命名等能够让人看到名称就知道大概的用处和功能。

另外各个单词间全用下划线,全部用小写。

user_count

“层次清楚”:代码各个模块逻辑要清楚,多用子函数,多用空行来间隔。

一般不建议一个函数的代码行数超过80行;

(2)库的使用

printf这是一个库函数。加快开发的进度。

头文件:.h,里面是函数及变量的声明。#include <stdio.h>,Linux下默认的头文件搜索路径:

系统定义的头文件:

/usr/include
/usr/local/include
/usr/target/include

自己定义的头文件路径,默认在执行这个程序的路径,即当前

库文件:

/lib  (是别人已经开发好的函数编译的目标文件,可重定位的。)
C函数库。

math库

编译时默认链接c库,如果要使用其他的库,编译时要 -l,例如:

gcc test.c -o test -lm -lc

ldd 看可执行文件 包含哪些 库文件

ldd ./test

(3)系统限制

本身平台的类型,32位的平台?64位平台?理解

数据类型的限制:

limits.h
ls /usr/include/limits.h 
cat /usr/include/limits.h # 这里面列出了常见的系统限制,如int类型范围,uint类型范围等;

float.h

系统本身的限制:

系统的资源是有限制的,不可能无限制的申请资源。

命令行:ulimit 来修改和获取。

编程时:getrlimit()函数来获取,setrlimit()来设置系统的限制

man getrlimit

RLIMIT_CORE:core文件的最大字节数。core文件是系统在某个进程出现异常退出时,系统为其保存的
上下文信息,在调试程序时经常要用。

RLIMIT_CPU:CPU时间的最大值(秒);
RLIMIT_DATA:一个进程数据段的最大字节数;
RLIMIT_FSIZE:可创建文件的大小的最大值;
RLIMIT_NOFILE:每个进程可以打开的文件的个数;
RLIMIT_STACK:进程栈空间的最大值,使系统不会自动的动态修改这个限制;
RLIMIT_VMEM:虚拟地址空间的最大值;
RLIMIT_AS:系统进程可用内存空间最大值;
RLIMIT_FSIZE FCHR_MAX
RLIMIT_NOFILE OPEN_MAX

【视频】 Linux高级程序设计01.2开发平台及Linux环境限制的更多相关文章

  1. 【视频】Linux高级程序设计01.1开发工具及gcc gdb

    [课程笔记] Linux 下编辑调试工具,gcc,gdb. 把高级语言编译成二进制可执行代码的工具. 需要经历四个步骤: (1) 预处理:去掉注释,进行宏替换(#define相关),头文件(#incl ...

  2. 【视频】Linux高级程序设计01.3命令行选项及参数

    [课程笔记] [命令行参数] 选项:-l -a -i 参数:-l /home main 函数形式: int main(int argc, char *argv[]) main函数是有参数的,而且有返回 ...

  3. 【linux高级程序设计】(第十章)Linux异步信号处理机制 3

    信号屏蔽 信号忽略:系统仍然传递该信号,只是相应的进程不做任何处理 信号屏蔽:进程不捕获信号,信号处于未决状态,当不再屏蔽信号时可以捕获之前被屏蔽的信号. 信号集数据结构定义: typedef __s ...

  4. 【5集iCore3_ADP演示视频】5-4 iCore3与应用开发平台的组装与拆卸

    iCore3双核心应用开发平台基于iCore3双核心板,包含ARM.FPGA.7寸液晶屏.双通道数字示波器.任意波发生器.电压表等模块,是一款专为电子爱好者设计的综合性电子学习系统. [视频简介]本视 ...

  5. linux下怎么安装Go开发环境?linux部署golang

    linux下怎么安装Go开发环境?linux部署golang  0.请自行安装SSH远程工具 1.  SSH远程登录你的linux服务器 2.   yum install mercurial安装 me ...

  6. 由Windows开发平台向Linux平台转移的一些想法

    从毕业到现在已经快20年了,一直在从事Windows平台上的开发工作.刚毕业那会大约是97,98年左右,工作的平台除了Windows平台还有Dos平台,因为在学校学习时,也是从Dos开始的.因此对于从 ...

  7. 【linux高级程序设计】(第八章)进程管理与程序开发 5

    守候进程 启动方式: 在系统启动时由/etc/rd.d目录下的启动脚本启动 利用inetd超级服务器启动 有cron命令定时启动,以及在终端用nohup命令启动 守护进程编程要点 (1)屏蔽有关控制终 ...

  8. Linux高级编程--01.vi命令

    VI是Linux/Unix下标配的一个纯字符界面的文本编辑器.由于不支持鼠标功能,也没有图形界面,相关的操作都要通过键盘指令来完成,需要记忆大量命令.因此很多人不大喜欢它,但同时由于键盘的方式往往比鼠 ...

  9. 【linux高级程序设计】(第十六章)网络服务器应用设计

    xinetd服务介绍 xinetd是Linux下的一个网络守候进程,用来统一管理网络负载不大的一组小型网路服务. 一些小型的网络服务,比如时间,telnet服务,不以守候进程出现,而是让xinetd服 ...

随机推荐

  1. 逆向映射是干嘛的anon_vma, vma, anon_vma_chain

    逆向映射是为了从page得到进程信息,里面有三个比较重要的结构体: mm_area_struct, anon_vma_chain, anon_vma 想象一种复杂的场景 所以其实一个进程对应着很多an ...

  2. 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS[转]

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...

  3. vue cli & npm err & shit cnpm

    vue cli & npm err & shit cnpm npm err & shit cnpm https://github.com/vuejs/vue-cli/issue ...

  4. ZooKeeper概述与安装

    ZooKeeper笔记 ZooKeeper概述 背景: 现代企业对计算机系统的计算存储能力要求越来越高,单纯的高性能服务器已经无法满足要求.企业的IT架构从集中式向分布式过度. 所谓分布式,就是将一个 ...

  5. 【转】oracle 删除重复记录

    转至:http://blog.163.com/aner_rui/blog/static/12131232820105901451809/ 2.保留一条(这个应该是大多数人所需要的 ^_^) Delet ...

  6. [bzoj] 2453 维护数列 || 单点修改分块

    原题 询问区间有种个颜色,单点修改某个位置. 修改次数<=1000 维护pre[i]为前一个与当前位置颜色一样的位置. 询问时以pre为关键字sort,lower_bound找pre<x的 ...

  7. 使用redis实现简单的锁机制

    在测试第三方账号注册时,授权拉取后,如果两台手册同时点击注册按钮,数据库中就会新增两天一模一样的数据,而我们的需求是一个第三方账号只能绑定一个账号,所以,由此现象可以知道,这里产生了并发访问,我们应该 ...

  8. 《c程序设计语言》读书笔记-5.9-指针转换天数和日期

    #include "stdio.h" #include "stdlib.h" #include "string.h" static char ...

  9. mac使用基础

    Mac 系统的桌面 Mac 的桌面是一个很炫的3D, 背景是一张“星空”图. 2 Dock:  在桌面的下方有一排图标, 叫Dock, 用来快速启动程序, 进入文件夹, 它同时还可以停靠正在运行的程序 ...

  10. Java笔记(一)

    1. ConcurrentModificationException 在遍历容器的同时修改容器里的成员对象可能会抛出该异常 http://www.blogjava.net/EvanLiu/archiv ...