在Linux系统下,我们通常需要获取当前程序执行的路径,以便读取或写入配置文件、日志文件等。本文将简要介绍如何在C语言中获取当前路径。
我们提供的服务有:成都网站建设、成都网站设计、微信公众号开发、网站优化、网站认证、静安ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的静安网站制作公司
一、使用getcwd函数获取当前路径
getcwd函数用于获取当前的工作路径,其函数原型为:
“`c
char *getcwd(char *buf, size_t size);
“`
其中,buf是保存当前路径的缓存区,size是buf的大小。函数返回buf指针,如果出现错误,返回NULL。
例子如下:
“`c
#include
#include
#define MAX_PATH 1024
int mn()
{
char path[MAX_PATH];
if(getcwd(path, MAX_PATH) != NULL)
printf(“Current path: %s\n”, path);
else
perror(“getcwd() error”);
return 0;
}
“`
在以上代码中,我们首先定义了一个大小为MAX_PATH的字符数组path,用于保存当前路径。然后,我们使用getcwd函数获取当前路径,并将返回的值保存到path数组中。我们输出path数组的值,即可获取当前路径。
二、使用readlink函数获取当前路径
readlink函数用于读取符号链接文件的值,其函数原型为:
“`c
ssize_t readlink(const char *pathname, char *buf, size_t bufsiz);
“`
其中,pathname是符号链接文件的路径名,buf是缓存区,bufsiz是缓存区大小。如果成功,该函数返回赋值到缓存区中的字符数;如果失败,返回-1。
我们可以利用readlink函数获取当前路径。如下:
“`c
#include
#include
#include
int mn()
{
char path[PATH_MAX];
if(readlink(“/proc/self/exe”, path, sizeof(path)) != -1)
printf(“Current path: %s\n”, path);
else
perror(“readlink() error”);
return 0;
}
“`
在以上代码中,我们首先定义了一个大小为PATH_MAX的字符数组path,用于保存当前路径。然后,我们使用readlink函数读取符号链接文件”/proc/self/exe”的值,并将返回的值保存到path数组中。我们输出path数组的值,即可获取当前路径。
三、
成都网站建设公司-创新互联为您提供网站建设、网站制作、网页设计及定制高端网站建设服务!
可以利用getenv函数来实现。
在Linux系统中,home目录的定义是通过系睁扒统
环境变毁早铅量
中的HOME变量值来确定的,在shell下可以通过
echo $HOME来查看。
而在纤好C语言中,库函数getenv可以用作获取环境变量值。该函数位于
stdlib.h
, 原型为
char *getenv(char *name);
功能为获取名字为name的环境变量
字符串
。
所以,下面代码就可以获取到home目录名了:
char *home;
home = getenv(“HOME”);
printf(“the home path is %s\n”, home);
#include
#include
#include
#include
int main(){
DIR *dir;
struct 液枝 dirent 吵盯 *ptr;
dir = opendir(“/home”);
while((ptr = readdir(dir)) != NULL)
printf(“d_name: %s\n”, ptr->d_name);
升埋和 closedir(dir);
return 0;
}
#include 吵盯
#include
#include
int main(void)
{
液枝 printf(“当前用户的home目录升埋和为: %s\n”, getpwuid(getuid())->pw_dir);
return 0;
}
linux系统的home目录,直接输入“cd ~”就可以了吧
这篇文章主要介绍了Linux系统中获取路径的文件名的方法,文中总结出了两条,需要的朋友可以参考下
代码如下:
>#basename
/root/aaa/bbb/dabu.txt
显示:
代码如下:
dabu.txt
#获取路径的文件名
shell脚本中如何获得脚本文件所在路径?
方法一:
代码如下:
>#DIR=$(cd
“$(dirname
“$0″)”;
pwd)
>#echo
$DIR
但是像这种dirname
“$0″这种写法,在遇到source命令时会得到错误的结果。
方法二:
代码如下:
>#echo
“$(
cd
“$(
dirname
“${BASH_SOURCE}”
)”
&&
pwd
)”
上面一行命令可以获得唤行信脚本的和轮绝对轮径,无论你在何处调用这个脚本。
但是如果含有软链接,就无法使用了。所以,我们为了能正确解析指向脚本的软链接,可以使用下面的多行命令:
代码如下:
SOURCE=”${BASH_SOURCE}”
while
-h
“$SOURCE”
>;
do
#
resolve
$SOURCE
until
the
file
is
no
longer
a
symlink
DIR=”$(
cd
-P
“$(
dirname
“$SOURCE”
)”
&&
pwd
)”
SOURCE=”$(readlink
“$SOURCE”)”
$SOURCE
!=
/*
>>
&&
SOURCE=”$DIR/$SOURCE”
#
if
$SOURCE
was
a
relative
symlink,
we
need
to
resolve
it
relative
to
the
path
where
the
symlink
file
was
located
done
DIR=”$(
cd
-P
“$(
dirname
“$SOURCE”
)”
&&
pwd
)”
也可与source,bash
-c命令使用
但是,如果你在脚本中使用先cd切换到其他目录,在运行时上面的命令片段时,则上面的命令不能等到正确的结果。可以参考关于$CDPATH
陷阱的文章。想理解它如何其作带晌用的,可以运行下面的代码:
代码如下:
#!/bin/bash
SOURCE=”${BASH_SOURCE}”
while
-h
“$SOURCE”
>;
do
#
resolve
$SOURCE
until
the
file
is
no
longer
a
symlink
TARGET=”$(readlink
“$SOURCE”)”
if
$SOURCE
==
/*
>>;
then
echo
“SOURCE
‘$SOURCE’
is
an
absolute
symlink
to
‘$TARGET'”
SOURCE=”$TARGET”
else
DIR=”$(
dirname
“$SOURCE”
)”
echo
“SOURCE
‘$SOURCE’
is
a
relative
symlink
to
‘$TARGET’
(relative
to
‘$DIR’)”
SOURCE=”$DIR/$TARGET”
#
if
$SOURCE
was
a
relative
symlink,
we
need
to
resolve
it
relative
to
the
path
where
the
symlink
file
was
located
fi
done
echo
“SOURCE
is
‘$SOURCE'”
RDIR=”$(
dirname
“$SOURCE”
)”
DIR=”$(
cd
-P
“$(
dirname
“$SOURCE”
)”
&&
pwd
)”
if
“$DIR”
!=
“$RDIR”
>;
then
echo
“DIR
‘$RDIR’
resolves
to
‘$DIR'”
fi
echo
“DIR
is
显示当前路径使用
穗渣模pwd
拷猜缓贝当前梁芹路径是指?复制到哪里?
文件复制命令是cp
Linux系统下复制命令为cp,但是cp不带参数只能复制文件,如弊掘哗果需要把一个目录下的子目录复制到当前目录,需要加参数-R递归操作,把目录下文件和子目录一并处理:
例如:把/mnt/zhidao子目录复制到当前/etc目录下
cp -R /mnt/zhidao /etc
Linux系统下cp命令常用参数:
-a:此参数的效果和同时指定”-dpR”参数相同
-b:删除、覆盖目的文件先备份
-f:强行复制文件或目录, 不论目的文件或目录是否已经存在
-i:覆盖文件之前先询问用户
-l:对源文件建立硬链接,而非复制文件
-p::保留源文件或目录的散宏属性,包括所有者、所属组、权限与时间
-r:递归处理,将指定目录下的文件与子目录一并处理。
-R:递归处理,将指定目录下的文件及子目录一并处租行理
-v :显示执行过程
关于linux c获取当前路径的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
创新互联-老牌IDC、云计算及IT信息化服务领域的服务供应商,业务涵盖IDC(互联网数据中心)服务、云计算服务、IT信息化、AI算力租赁平台(智算云),软件开发,网站建设,咨询热线:028-86922220
本文名称:LinuxC语言编程:获取当前路径(linuxc获取当前路径)
本文来源:http://www.shufengxianlan.com/qtweb/news4/231804.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联