当前位置: 技术问答>linux和unix
Linux下一些目录和文件访问的问题
来源: 互联网 发布时间:2015-11-14
本文导语: 请问各位大侠,在c种有没有什么标准的库函数能够得到当前系统种得环境变量,以及如何实现判断某个目录下是否存在某个文件的函数啊,如果有请给出头文件和相应的函数原型,(有简短代码就跪谢了),呵呵 ...
请问各位大侠,在c种有没有什么标准的库函数能够得到当前系统种得环境变量,以及如何实现判断某个目录下是否存在某个文件的函数啊,如果有请给出头文件和相应的函数原型,(有简短代码就跪谢了),呵呵
|
获得一个环境变量可以通过调用‘getenv()’函数完成。
#include
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("%sn",envvar);
}
else
{
printf("not set.n");
}
---------------------
如果你不知道确切你想要的环境变量的名字,那么‘getenv()’函数不是很有用。在这种情况下,你必须更深入了解环境变量表的存储方式。
全局变量,‘char **envrion’,包含指向环境字符串指针数组的指针,每一个字符串的形式为‘“NAME=value”’。这个数组以一个‘空’(NULL)指针标记结束。这里是一个打印当前环境变量列表的小程序(类似‘printenv’)。
#include
extern char **environ;
int main()
{
char **ep = environ;
char *p;
while ((p = *ep++))
printf("%sn", p);
return 0;
}
=============================
#include
int access (const char *pathname, int mode);
返回:成功为0,出错为-1
其中mode常数取自
mode 说明
R_OK 测试读许可权
W_OK 测试写许可权
X_OK 测试执行许可权
F_OK 测试文件是否存在
另外lstat也可以达到这个目的。
#include
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("%sn",envvar);
}
else
{
printf("not set.n");
}
---------------------
如果你不知道确切你想要的环境变量的名字,那么‘getenv()’函数不是很有用。在这种情况下,你必须更深入了解环境变量表的存储方式。
全局变量,‘char **envrion’,包含指向环境字符串指针数组的指针,每一个字符串的形式为‘“NAME=value”’。这个数组以一个‘空’(NULL)指针标记结束。这里是一个打印当前环境变量列表的小程序(类似‘printenv’)。
#include
extern char **environ;
int main()
{
char **ep = environ;
char *p;
while ((p = *ep++))
printf("%sn", p);
return 0;
}
=============================
#include
int access (const char *pathname, int mode);
返回:成功为0,出错为-1
其中mode常数取自
mode 说明
R_OK 测试读许可权
W_OK 测试写许可权
X_OK 测试执行许可权
F_OK 测试文件是否存在
另外lstat也可以达到这个目的。
|
《unix环境高级编程》讲了这些,有电子书,很容易找到