#include #include #include #include #include #ifndef RLIMIT_TUMB #define RLIMIT_TUMB 11 #endif char * programname; void usage() { printf("Usage: %s [hard=n] [soft=n] [both=n] [--] cmd\n",programname); exit(1); } int main(int argc, char ** argv) { int n; struct rlimit lim; getrlimit(RLIMIT_TUMB,&lim); programname=*argv; while (1) { if (!*++argv) usage(); if (strlen(*argv)>=5) n=atoi((*argv)+5); if (!strncmp(*argv,"hard=",5)) { lim.rlim_max=n; continue; } else if (!strncmp(*argv,"soft=",5)) { lim.rlim_cur=n; continue; } else if (!strncmp(*argv,"both=",5)) { lim.rlim_max=n; lim.rlim_cur=n; continue; } else if (!strcmp(*argv,"--")) { ++argv; } break; } if (!*argv) usage(); setrlimit(RLIMIT_TUMB,&lim); /* getrlimit(RLIMIT_TUMB,&lim); printf("%08x %08x\n",lim.rlim_cur,lim.rlim_max); */ execvp(*argv,argv); perror(*argv); return 1; }