【视频】 Linux高级程序设计01.2开发平台及Linux环境限制

时间:2024-04-28 13:05:54

【课程笔记】

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