char *getcwd( char *buffer, int maxlen )
而要瞎哪找到当雀神陪前所运行的文件的目录,可以使用
readlink("/proc/self/exe", char *buffer, int maxlen )
如果是通过open方式打开的,那么第一个参数就是文件路径信息:#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *path, int oflag, /* mode_t mode */...)
如果是通过fopen方式打开的,那么第一个参数就是文件路径信息:
#include <stdio.h>
FILE *fopen(const char *filename, const char *mode)
无论通过open还是fopen打开文件,都必须先知道文世族晌件路径信息,尽管可能是相对路径。搜锋
如果知道了filename的内容,我们就可以定穗罩位它的绝对路径,也就是你说的完全路径。
1. filename本身就是绝对路径,ok。
2. filename是相对路径,那么先通过getcwd获取进程的执行路径,然后再获取绝对路径即可。
#include <unistd.h>
extern char *getcwd(char *buf, size_t size)
但是,如果进程在打开文件后又执行了chdir、fchdir之类函数的话,估计就不能够再获取文件路径信息了。
#include <unistd.h>
int chdir(const char *path)
int fchdir(int fildes)
1、可以利用getenv函数来实现。在Linux系统中,home目录的定义是通过系统环境变量中的HOME变量值来确定的,在shell下可以通过
echo $HOME来查看。
而在C语言中,库函数getenv可以用作获取环差枣境变量值。该函数位于stdlib.h, 原型为
char *getenv(char *name)
功能为获取名字为name的环境变量字符串。
所以,下面代码就可以获取到home目录名了:
2、镇埋例程虚旅拆:
char *home
home = getenv("HOME")
printf("the home path is %s\n", home)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)