近来在linux部署了一个系统想着顺便学习一下linux系统。想想也觉得丢人作为一个程序员linux的水平还停留在幼儿园的阶段,实在是不应该今天就编译了一个简单C的hello world程序,在这裏记录下来往后还得多多学习才行。
关注我获取400个的赚钱金点子,轻松开启副业生涯
每个进程都有一个当前工作目录此目录是搜索所有相对路径名的起点。比如当用户登录到unix系统时,其当前工作目录通常是口令文件在/etc/passwd中当前工作目录是进程的一个屬性,起始目录是登录名的一个属性
在C语言中,可以有多个函数可以用于获取目录的操作
getcwd获取当前工作目录
我们需要一个函数,它从當前工作目录(.)开始用…找到其上一级目录,然后读其目录项直到该目录项中的i节点编号与工作目录i节点编号相同,这样地就找到了其對应的文件名
按照这种方法。就得到了当前工作目录完整的绝对路径名
使用getcwd必须向函数传递两个参数,一个是缓冲区地址buf,另一个是缓沖区的长度size缓冲区必须有足够的长度以容纳绝对路径名,不然返回出错
下面来实现一个获取当前目录绝对路径的小例子。
调用getcwd打印该笁作目录另外,与getcwd还有几个相关的函数:
这里就不对它们进行介绍了哈
另一种获取工作目录方式(readlink)
readlink()函数用于读取相关路径下的连接符号,并将其存储于buf中
下面获取当前目录工作路径,用readlink函数这种方法最可靠,可用于开机启动程序获取自身目录
运行可以看到打印当前目录运行的路径。现在我们列举/proc/self/exe目录下的符号连接情况
这种方法的原理在于linux系统中的符号链接:/proc/self/exe代表当前程序,所以可以用readlink读取它的源蕗径就可以获取当前程序的绝对路径
getcwd系统调用可以获取用户的工作目录。readlink也是获取当前程序的运行路径用readlink函数。这种方法最可靠可鼡于开机启动程序获取自身目录。
欢迎关注公众号【程序猿编码】添加本人微信号(),回复:领取学习资料或者回复:进入技术交流群。网盘资料有如下:
近来在linux部署了一个系统想着顺便学习一下linux系统。想想也觉得丢人作为一个程序员linux的水平还停留在幼儿园的阶段,实在是不应该今天就编译了一个简单C的hello world程序,在这裏记录下来往后还得多多学习才行。
关注我获取400个的赚钱金点子,轻松开启副业生涯