为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 网络编程 > 其它综合 正文

UNIX 平台 C 程序开发心得

三叶资源网 2022-11-07 19:18:50 其它综合 142 ℃ 0 评论

1. limit

1 . 1 基本知识 查看 UNIX 操作系统资源限制 [HP-BILLFEE]limit cputime unlimited filesize unlimited datasize 1048576 kbytes stacksize 8192 kbytes coredumpsize 2097151 kbytes descriptors 2048 files memoryuse unlimited cputime: filesize: datasize: stacksize: coredumpsize: descriptors: memoryuse:

1 . 2 跟 l i mit 相关的注意事项 a. 通过 limit 限定的是某个用户对资源占用的软限制;在内核中, 有关于上述参 数的硬限制, 是针对所有用户而言的。 软限制无法超过硬限制。 b. 针对文件处理程序, 打开文件句柄后, 如果在异常处理环节忘记将文件句柄 关闭, 那么程序占用的文件句柄数就会越来越多。 当超过 descriptors 数量之 后, 就会出现无法打开文件的错误。 c. descriptors 不光是指文件句柄,还包括: socket 句柄等。当 socket 连接建立后, 如果没有正常的将 socket 连接关闭。 那么程序占用的 descriptors 数量也会超 过系统的软限制, 从而出现 socket 连接失败、 文件打开失败等情况。 d. 存储器组织有三种形式: 静态分配、 栈分配、 堆分配。 静态存储分配: 如果在编译时能确定目标程序运行的全部数据空间的大 小, 编译时安排好目标程序运行时的全部数据空间,确定每个数据对象的存 储位置, 那么则称这种分配策略为静态存储分配。 栈式存储分配: 子程序数据区为过程的活动记录 (Activation recorder) 简记 AR , 当一过程或函数被调用,活动记录 AR 被压入运行栈。当过程或子程序 返回时, 其活动记录被弹出运行栈, 也就是释放空间。 堆式存储分配: 用户可以自由的申请和释放空间。 数据对象的空间的分配与释放, 可在任何时间按任何顺序进行。 例如: C 和 C++ 的 alloc() 、 malloc() 。 e. 对于占用内存量很大的程序, 需要注意程序 malloc 的累积内存量应当低于 datasize 。 否则 malloc 函数会调度失败, 程序一般会提示: 内存不足。 f. stacksize 太小可能导致部分在其他机器上能够正常运行的程序无法运行, 出 现 coredump 。 因为程序编译完成后, 占用的 stack 大小是固定的, 如果低于 stacksize , 则程序无法装入内存。 例如: 在 Session. h 中定义了 CSession 类的一个成员: filename[MAX_FILE_NUM] [512] ; 该成员大概占用了 50K 的 stack size 。 50K 的 stacksize 导致程序在运行的时候, 无法将数据压栈, 从而出现总线 错误。 如果将 filename 修正成为 static 类型的, 如下: { … static char filename[MAX_FILE_NUM] [512] ; … } ; char CSession: : filename[MAX_FILE_NUM] [512] ; 那么 filename 就不需要反复压栈, 从而程序就可以正常运行。

1 . 3相关技巧 1 . 3.1 检查没有关闭的句柄 查看程序没有释放的句柄的方法, 可以通过: for (i=0;i<FOPEN_MAX;i++) // FOPEN_MAX 是程序可以打开的最大句柄 { if (close(i) ==EBADF) // 或其他的不影响程序功能的函数 printf("bad file handle:%d\n", i) ; } 如果是 FILE * 类型, 可以通过 fileno 转换得到 file handle 。 在适当的时候, 用上述的方法检查那些没有关闭。

Tags:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
FlashFXP云的多窗口界面支持库聊天室例程Windows身份验证HttpWatch破解版数美伊对APP协议Accessible接口永辉生活ERP管理系统数独算法崩溃自动转储高级输入框post登陆微视扫码quickjsoffice2019激活E2EE互联网服务器套件咪咕音乐抖音脚本
最新评论