loop-2f.c

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 64 行

C
64
字号
#include <limits.h>#ifdef __unix__ /* ??? Is that good enough? */#include <sys/types.h>#include <sys/mman.h>#include <sys/stat.h>#include <fcntl.h>#ifndef MAP_ANON#ifdef MAP_ANONYMOUS#define MAP_ANON MAP_ANONYMOUS#else#define MAP_ANON MAP_FILE#endif#endif#ifndef MAP_FILE#define MAP_FILE 0#endif#ifndef MAP_FIXED#define MAP_FIXED 0#endif#endif#define MAP_START (void *)0x7fff8000#define MAP_LEN 0x10000#define OFFSET (MAP_LEN/2 - 2 * sizeof (char));f (int s, char *p){  int i;  for (i = s; i >= 0 && &p[i] < &p[40]; i++)    {      p[i] = -2;    }}main (){#ifdef MAP_ANON  char *p;  int dev_zero;  dev_zero = open ("/dev/zero", O_RDONLY);  /* -1 is OK when we have MAP_ANON; else mmap will flag an error.  */  if (INT_MAX != 0x7fffffffL || sizeof (char *) != sizeof (int))    exit (0);  p = mmap (MAP_START, MAP_LEN, PROT_READ|PROT_WRITE,	    MAP_ANON|MAP_FIXED|MAP_PRIVATE, dev_zero, 0);  if (p != (char *)-1)    {      p += OFFSET;      p[39] = 0;      f (0, p);      if (p[39] != (char)-2)	abort ();      p[39] = 0;      f (-1, p);      if (p[39] != 0)	abort ();    }#endif  exit (0);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?