Linux--Advance getenv的非可重入版本
来源:互联网 发布:网络文献参考文献格式 编辑:程序博客网 时间:2024/06/08 00:17
这里我们将 getenv 获取的环境变量写入全局变量中,所以这个版本不是可重入的。
下面是测试代码:
#include <stdio.h>#include <stdlib.h>#include <limits.h>#include <string.h>#include <pthread.h>#include <errno.h>#define ARG_MAX 100static 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]);return envbuf;}}return 0;}void *thr_func(void *arg){ char *p = getenv(arg); if (p) printf("thread 1: %s\n", p); else printf("thread 1: not found\n");}int main(){int err, tid;err = pthread_create(&tid, 0, thr_func, "SHELL");if (err != 0) {printf("can't create thread\n");exit(1);}char *p = getenv("JOB");if (p) printf("main part: %s\n", p);else printf("main part: not found\n");sleep(1); return 0;}
1 0
- Linux--Advance getenv的非可重入版本
- Linux Advance--可重入的getenv
- Linux Advance--标准I/O的效率
- Linux Advance--输出错误信息
- Linux Advance--守护进程
- Linux Advance--打印文件类型
- Linux Advance--文件IO--创建一个具有空洞的文件
- getenv
- getenv
- getenv
- getenv()
- linux编程:getenv,putenv,setenv
- Linux Advance--同步信号处理
- Linux Advance--线程和fork
- Linux Advance--设备特殊文件
- Linux Advance--set_fl 和 clr_fl
- Linux Advance--从一道题谈linux下fork的运行机制
- System的getenv 和getProptery
- C/C++中static关键字详解
- C语言的32个关键字、9种控制语句、34个运算符
- 常见的数字及浏览器版本修改
- 另类QQ客户端 直接用QQ号登陆 (借花献佛)
- 【Java 基础】--HttpServlet详解
- Linux--Advance getenv的非可重入版本
- NY2 括号匹配问题
- java获取html文档中的所有img标签
- 复杂网络入门读物
- SOA webservice
- Linux下编译的第一个程序
- Tomcat中JVM内存溢出及合理配置
- Qt 改变形状的对话框
- Java static关键字总结