Unix环境高级编程(7-8 打印当前资源限制)c语言宏定义中的#,##
2012-12-16 13:05
609 查看
#include<stdio.h> #include<stdlib.h> #if defined(BSD) || defined(MACOS) #include<sys/time.h> #define FMT "%10lld " #else #define FMT "%10ld " #endif #include<sys/resource.h> #define doit(name) pr_limits(#name,name) static void pr_limits(char * ,int); int main(void) { #ifdef RLIMIT_AS doit(RLIMIT_AS); #endif doit(RLIMIT_CORE); doit(RLIMIT_CPU); doit(RLIMIT_DATA); doit(RLIMIT_FSIZE); #ifdef RLIMIT_LOCKS doit(RLIMIT_LOCKS); #endif #ifdef RLIMIT_MEMLOCK doit(RLIMIT_MEMLOCK); #endif doit(RLIMIT_NOFILE); #ifdef RLIMIT_NPROC doit(RLIMIT_NPROC); #endif #ifdef RLIMIT_RSS doit(RLIMIT_RSS); #endif #ifdef RLIMIT_SBSIZE doit(RLIMIT_SBSIZE); #endif doit(RLIMIT_STACK); #ifdef RLIMIT_VMEM doit(RLIMIT_VMEM); #endif exit(0); } static void pr_limits(char *name,int resource) { struct rlimit limit; if(getrlimit(resource,&limit)<0) printf("getrlimit error for %s",name); printf("%-14s ",name); if(limit.rlim_cur==RLIM_INFINITY) printf("(infinite) "); else printf(FMT,limit.rlim_cur); if(limit.rlim_max==RLIM_INFINITY) printf("(infinite)"); else printf(FMT,limit.rlim_max); putchar((int)'\n'); }
-------------------------------------------------------------------------------------
在shell下面可以用:ulimit
-------------------------------------------------------------------------------------
附录:
1.字符串创建运算符(#)它后面的变量将用双引号括起来成为字符串
例如 :
# define doit(name) pr_limits(#name, name) ;
doit(RLIMIT_CORE)
将由c预处理程序扩展为
pr_limits("RLIMIT_CORE",RLIMIT_CORE);
2.合并符 (##)
" It permits separate tokens to be joined into a single token and therefore cannot be the first or last token in the macro definition." http://msdn.microsoft.com/en-us/library/09dwwt6y(v=vs.80).aspx #define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;
If a macro is called with a numeric argument like
Copypaster( 9 );
the macro yields
Copyprintf_s( "token" "9" " = %d", token9 );
which becomes
Copyprintf_s( "token9 = %d", token9 );
相关文章推荐
- C语言(转自UNIX环境高级编程等)
- UNIX环境高级编程——管道和FIFO限制
- UNIX环境高级编程——管道和FIFO限制
- UNIX环境高级编程——管道和FIFO限制
- UNIX环境高级编程——线程限制 && 线程属性
- UNIX环境高级编程-打印进程ID
- 高级UNIX环境编程13 守护进程
- UNIX环境高级编程、UNIX网络编程(卷一)环境搭建
- 标准IO库、系统数据文件和信息 - UNIX环境高级编程-第5、6章
- UNIX环境高级编程--文件共享
- unix环境高级编程书中实例缺少apue.h头文件解决方法
- unix环境高级编程-5.2~3标准I/O库。
- Unix环境高级编程笔记:9、进程关系
- UNIX环境高级编程第一章程序1-1列出目录文件
- UNIX环境高级编程------10 信号
- I/O多路转接 --- UNIX环境高级编程
- UNIX环境高级编程---读后感
- UNIX环境高级编程——线程和信号
- (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息
- UNIX环境高级编程——Linux进程地址空间和虚拟内存