新聞中心
在Linux系統(tǒng)下,我們通常需要獲取當(dāng)前程序執(zhí)行的路徑,以便讀取或?qū)懭肱渲梦募⑷罩疚募?。本文將簡要介紹如何在C語言中獲取當(dāng)前路徑。

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、靜安ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的靜安網(wǎng)站制作公司
一、使用getcwd函數(shù)獲取當(dāng)前路徑
getcwd函數(shù)用于獲取當(dāng)前的工作路徑,其函數(shù)原型為:
“`c
char *getcwd(char *buf, size_t size);
“`
其中,buf是保存當(dāng)前路徑的緩存區(qū),size是buf的大小。函數(shù)返回buf指針,如果出現(xiàn)錯誤,返回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的字符數(shù)組path,用于保存當(dāng)前路徑。然后,我們使用getcwd函數(shù)獲取當(dāng)前路徑,并將返回的值保存到path數(shù)組中。我們輸出path數(shù)組的值,即可獲取當(dāng)前路徑。
二、使用readlink函數(shù)獲取當(dāng)前路徑
readlink函數(shù)用于讀取符號鏈接文件的值,其函數(shù)原型為:
“`c
ssize_t readlink(const char *pathname, char *buf, size_t bufsiz);
“`
其中,pathname是符號鏈接文件的路徑名,buf是緩存區(qū),bufsiz是緩存區(qū)大小。如果成功,該函數(shù)返回賦值到緩存區(qū)中的字符數(shù);如果失敗,返回-1。
我們可以利用readlink函數(shù)獲取當(dāng)前路徑。如下:
“`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的字符數(shù)組path,用于保存當(dāng)前路徑。然后,我們使用readlink函數(shù)讀取符號鏈接文件”/proc/self/exe”的值,并將返回的值保存到path數(shù)組中。我們輸出path數(shù)組的值,即可獲取當(dāng)前路徑。
三、
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
c語言怎么獲得linux的home目錄
可以利用getenv函數(shù)來實現(xiàn)。
在Linux系統(tǒng)中,home目錄的定義是通過系睜扒統(tǒng)
環(huán)境變毀早鉛量
中的HOME變量值來確定的,在shell下可以通過
echo $HOME來查看。
而在纖好C語言中,庫函數(shù)getenv可以用作獲取環(huán)境變量值。該函數(shù)位于
stdlib.h
, 原型為
char *getenv(char *name);
功能為獲取名字為name的環(huán)境變量
字符串
。
所以,下面代碼就可以獲取到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(“當(dāng)前用戶的home目錄升埋和為: %s\n”, getpwuid(getuid())->pw_dir);
return 0;
}
linux系統(tǒng)的home目錄,直接輸入“cd ~”就可以了吧
Linux系統(tǒng)中獲取路徑的文件名的方法
這篇文章主要介紹了Linux系統(tǒng)中獲取路徑的文件名的方法,文中總結(jié)出了兩條,需要的朋友可以參考下
代碼如下:
>#basename
/root/aaa/bbb/dabu.txt
顯示:
代碼如下:
dabu.txt
#獲取路徑的文件名
shell腳本中如何獲得腳本文件所在路徑?
方法一:
代碼如下:
>#DIR=$(cd
“$(dirname
“$0″)”;
pwd)
>#echo
$DIR
但是像這種dirname
“$0″這種寫法,在遇到source命令時會得到錯誤的結(jié)果。
方法二:
代碼如下:
>#echo
“$(
cd
“$(
dirname
“${BASH_SOURCE}”
)”
&&
pwd
)”
上面一行命令可以獲得喚行信腳本的和輪絕對輪徑,無論你在何處調(diào)用這個腳本。
但是如果含有軟鏈接,就無法使用了。所以,我們?yōu)榱四苷_解析指向腳本的軟鏈接,可以使用下面的多行命令:
代碼如下:
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切換到其他目錄,在運行時上面的命令片段時,則上面的命令不能等到正確的結(jié)果??梢詤⒖缄P(guān)于$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
linux怎么顯示并拷貝當(dāng)前文件路徑
顯示當(dāng)前路徑使用
穗渣模pwd
拷猜緩貝當(dāng)前梁芹路徑是指?復(fù)制到哪里?
文件復(fù)制命令是cp
Linux系統(tǒng)下復(fù)制命令為cp,但是cp不帶參數(shù)只能復(fù)制文件,如弊掘嘩果需要把一個目錄下的子目錄復(fù)制到當(dāng)前目錄,需要加參數(shù)-R遞歸操作,把目錄下文件和子目錄一并處理:
例如:把/mnt/zhidao子目錄復(fù)制到當(dāng)前/etc目錄下
cp -R /mnt/zhidao /etc
Linux系統(tǒng)下cp命令常用參數(shù):
-a:此參數(shù)的效果和同時指定”-dpR”參數(shù)相同
-b:刪除、覆蓋目的文件先備份
-f:強行復(fù)制文件或目錄, 不論目的文件或目錄是否已經(jīng)存在
-i:覆蓋文件之前先詢問用戶
-l:對源文件建立硬鏈接,而非復(fù)制文件
-p::保留源文件或目錄的散宏屬性,包括所有者、所屬組、權(quán)限與時間
-r:遞歸處理,將指定目錄下的文件與子目錄一并處理。
-R:遞歸處理,將指定目錄下的文件及子目錄一并處租行理
-v :顯示執(zhí)行過程
關(guān)于linux c獲取當(dāng)前路徑的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)-老牌IDC、云計算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計算服務(wù)、IT信息化、AI算力租賃平臺(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220
分享名稱:LinuxC語言編程:獲取當(dāng)前路徑(linuxc獲取當(dāng)前路徑)
文章路徑:http://m.fisionsoft.com.cn/article/dpjcgig.html


咨詢
建站咨詢
