Linux下一些目录和文件访问的问题
请问各位大侠,在c种有没有什么标准的库函数能够得到当前系统种得环境变量,以及如何实现判断某个目录下是否存在某个文件的函数啊,如果有请给出头文件和相应的函数原型,(有简短代码就跪谢了),呵呵 问题点数:20、回复次数:4Top
1 楼x86(大雪)回复于 2006-03-14 09:33:59 得分 15
获得一个环境变量可以通过调用‘getenv()’函数完成。
#include <stdlib.h>
char *getenv(const char *name);
记住环境变量是被继承的;每一个进程有一个不同的环境变量表拷贝(译者注:从core文件中我们可以看出这一点)。结果是,你不能从一个其他进程改变当前进程的环境变量,比如shell进程。
假设你想得到环境变量‘TERM’的值,你需要使用下面的程序:
char *envvar;
envvar=getenv("TERM");
printf("The value for the environment variable TERM is ");
if(envvar)
{
printf("%s\n",envvar);
}
else
{
printf("not set.\n");
}
---------------------
如果你不知道确切你想要的环境变量的名字,那么‘getenv()’函数不是很有用。在这种情况下,你必须更深入了解环境变量表的存储方式。
全局变量,‘char **envrion’,包含指向环境字符串指针数组的指针,每一个字符串的形式为‘“NAME=value”’。这个数组以一个‘空’(NULL)指针标记结束。这里是一个打印当前环境变量列表的小程序(类似‘printenv’)。
#include <stdio.h>
extern char **environ;
int main()
{
char **ep = environ;
char *p;
while ((p = *ep++))
printf("%s\n", p);
return 0;
}
=============================
#include <unistd.h>
int access (const char *pathname, int mode);
返回:成功为0,出错为-1
其中mode常数取自<unistd.h>
mode 说明
R_OK 测试读许可权
W_OK 测试写许可权
X_OK 测试执行许可权
F_OK 测试文件是否存在
另外lstat也可以达到这个目的。
Top
2 楼pineapple1175(向窗外看看)回复于 2006-03-14 12:08:59 得分 0
谢谢二楼的解答,再想请问一下,这些库函数再网上或者什么电子书能找得到吗??
有得话发给我好吗?
我得邮箱pienapple1175@sina.com.cnTop
3 楼yjf7888(seeking a place 找工作了location:Chengdu)回复于 2006-03-14 12:21:55 得分 5
《unix环境高级编程》讲了这些,有电子书,很容易找到Top
4 楼pineapple1175(向窗外看看)回复于 2006-03-14 22:06:14 得分 0
谢谢楼上帮助Top




