标签:mit std limit getrlimit 命令行参数 超过 命令行 假设 存储空间
1.进程终止
以上五种位正常终止。
以上三种为异常终止。
其中_exit和_Exit立即进入内核,exit则会先执行一些清理处理,然后返回内核。
#include <stdlib.h> void exit(int status); void _Exit(int status); #include <unistd.h> void _exit(int status);
2.命令行参数
#include <stdio.h> int main(int argc, char *argv[]) { int i; for(i = 0; i < argc; i++) { printf("argv[%d]:%s\n", i, argv[i]); } exit(0); }
假设进行名字为app,则运行./app arg1 TEST foo
运行结果:argv[0]:./app
argv[1]: arg1
argv[2]: TEST
argv[3]: foo
ISO C和POSIX.1都要求argv[argc]是一个空指针。所以可以讲参数处理循环改写为:
for(i = 0; argv[i] != NULL; i++)
3.C程序的存储空间布局
size命令可以查看当前一个进程的正文段、数据段等。eg:size /usr/bin/test
4.存储空间分配
#include <stdlib.h> void *malloc(size_t size); void *calloc(size_t nobj, size_t size); void *realloc(void *ptr, size_t newsize); void free(void *ptr);
大多数实现所分配的存储空间比所要求的要稍大一些,额外的空间用来记录管理信息。这意味着,如果超过一个已分配区的尾端或者在已分配区起始位置之前进行写操作,则会改写另一块的管理记录信息。
其他可能产生的致命性错误:
5.函数setjmp和longjmp
在C中,goto语句不能跨越函数实现。函数setjmp和longjmp可以实现跨函数的跳转。(目前没有使用到,暂不深入了解)
6.函数getrlimit和setrlimit
目前没有使用到,暂不深入了解。
标签:mit std limit getrlimit 命令行参数 超过 命令行 假设 存储空间
原文地址:https://www.cnblogs.com/zhuangquan/p/10717571.html