这里我们将 getenv 获取的环境变量写入全局变量中,所以这个版本不是可重入的。
下面是测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <string.h>
#include <pthread.h>
#include <errno.h>
#define ARG_MAX 100
static char envbuf[ARG_MAX];
extern char **environ;
//用于输出环境变量
//void showenv()
//{
// int i = 0;
// while(environ[i]) {
// printf("%s\n", environ[i]);
// i++;
// }
//}
char *getenv(const char *name)
{
int i, len;
len = strlen(name);
for (i=0; environ[i]; i++) {
if ((strncmp(name, environ[i], len) == 0) && (environ[i][len] == '=')) {
strcpy(envbuf, &environ[i][len+1]