go程序获取工作目录及可执行程序存放目录的方法-linux

简介

工作目录

通常就是指用户启动应用程序时,用户当时所在的文件夹的绝对路径。
如:root用户登录到linux系统后,一顿cd(change directory)后, 到了/tmp文件夹下。此时,用户要启动某个应用程序,这个应用程序的工作目录就是/tmp。此时,在应用程序编码中,所有使用相对路径的地方,都是相对于工作目录而言的。

如:要打开“./a.txt”, 实际上就是打开工作目录下的a.txt. 也就是/tmp/a.txt文件。

在go语言中,获取工作目录的方法:

import "os"
func os.Getwd()(dir string, err error)

可执行程序存放目录

毋庸讳言,就是可执行程序在硬盘中存放到哪个文件夹下面了。
如我有程序test, 把它拷贝到了硬盘的/home/wjg/文件加下了,那么可执行文件test的存放目录就是:/home/wjg/test。

无论你在哪个工作目录下启动test,test都在那里。

在go语言中,获取可执行程序存放目录的方法:

import "os"
import "path/filepath"
//获取应用程序的完整路径,包括文件名
func os.Executable() (string, error)
//去除文件名,保留路径
func filepath.Dir(string) string

//getpath.go
import ("fmt""os""path/filepath"
)func main() {dir, err := os.Getwd()if err != nil {fmt.Println(err)return}fmt.Println("           Work path is: ", dir)ex, err := os.Executable()if err != nil {panic(err)}fmt.Println("Executable path+name is: ", ex)exePath := filepath.Dir(ex)fmt.Println("     Executable path is: ", exePath)
}

编译后,执行./getpath
在这里插入图片描述
可以发现,工作目录和存放目录是相同的。那是因为执行是,用户就把存放目录作为工作目录使用了。

下面,我们cd到/tmp目录下,再次启动getpath程序,见下图:
在这里插入图片描述
从图中我们可以看到,工作目录编程了/tmp, 但是可执行程序存放目录依然是/root/go/get_path。
注:工作目录和存放目录不同时,启动应用程序需要使用可执行程序存放目录的绝对路径进行启动。
如上图:cd到/tmp目录下,但是/tmp目录下没有getpath这个程序,那我只能通过绝对路径找到getpath这个可执行程序,然后启动。

完结。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/185667.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis-Plus同时使用逻辑删除和唯一索引的问题及解决办法

1 问题背景 在开发中,我们经常会有逻辑删除和唯一索引同时使用的情况。但当使用mybatis plus时,如果同时使用逻辑删除和唯一索引,会报数据重复Duplicate entry的问题。 举例来说,有表user,建立唯一索引(u…

Qt实现动态桌面小精灵(含源码)

目录 一、设计思路 二、部分源码演示 三、源码地址 🌈write in front🌈 🧸大家好,我是三雷科技.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由三雷科技原创 CSDN首发🐒 如需转载还请通知⚠️ 📝个人主页:三雷科技🧸—CSDN博客 🎁欢…

了解高防服务器的工作原理

在当今互联网时代,网络安全问题日益突出,各种网络攻击层出不穷。为了保护企业的网络安全,高防服务器应运而生。那么,你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种网络攻击的…

万界星空科技MES系统软件体系架构及应用

MES系统是数字化车间的核心。MES通过数字化生产过程控制,借助自动化和智能化技术手段,实现车间制造控制智能化、生产过程透明化、制造装备数控化和生产信息集成化。生产管理MES系统主要包括车间管理系统、质量管理系统、资源管理系统及数据采集和分析系统…

C语言编写一个程序采集招聘信息

因为在这里无法详细解释每行代码和步骤。但是,我可以给大家一个使用Python和requests库编写的简单爬虫程序的例子,它可以从网站上获取招聘信息。你可以根据这个例子,将其改写为使用C语言编写的爬虫程序。 import requests# 指定爬虫IP信息 pr…

软件测试|测试方法论—边界值

边界值分析法是一种很实用的黑盒测试用例方法,它具有很强的发现故障的能力。边界值分析法也是作为对等价类划分法的补充,测试用例来自等价类的边界。 这个方法其实是在测试实践当中发现,Bug 往往出现在定义域或值域的边界上,而不…

“锡安主义”贝尔福宣言希伯来抵抗运动犹太启蒙改革运动奋锐党闪米特人雅利安人

目录 “锡安主义” 贝尔福宣言 希伯来抵抗运动 犹太启蒙改革运动 奋锐党 闪米特人 雅利安人 “锡安主义” “锡安主义”是一种政治和民族运动,旨在支持并促进犹太人建立自己的国家并在历史上与宗教上的祖先之地——巴勒斯坦地区建立一个独立的国家。这一运动…

nginx图片资源管理转发

目标: 服务器上面 /home/images 里面作为文件资源管理器 代码: server {listen 80;server_name hello.world.cn;#apple-app和接口的关联文件location ~.*(images/miniapp)*\.(gif|jpg|jpeg|png)$ {root /home/;try_files $uri $uri/ 404;add_header Cache-Control &q…

“第六十四天” 字扩展和位扩展,外部存储器

存储器和CPU的连接; 现在的计算机MAR,MDR通常集成在CPU内部。存储芯片内只需一个普通的寄存器(暂存输入,输出数据)。 位扩展,字扩展,字位同时扩展; 位扩展: 位扩展的增加的是主存的…

unity【动画】脚本_角色动画控制器 c#

首先创建一个代码文件夹Scripts 从人物角色Player的基类开始 创建IPlayer类 首先我们考虑到如果不挂载MonoBehaviour需要将角色设置成预制体实例化到场景上十分麻烦, 所以我们采用继承MonoBehaviour类的角色基类方法写代码 也就是说这个脚本直接绑定在角色物体…

经典OJ题:随机链表的复制

目录 题目: 本题的解图关键在于画图与看图! 思路分析: 方法一:暴力求解法。 方法二:插入法 方法解析: 步骤一、插入 步骤二、 处理每一个copy的randdom指针⭐————重点 步骤三、拆卸节点 代码…

软件测试|iOS 自动化测试——技术方案、环境配置

移动端的自动化测试,最常见的是 Android 自动化测试,我个人觉得 Android 的测试优先级会更高,也更开放,更容易测试;而 iOS 相较于 Android 要安全稳定的多,但也是一个必须测试的方向,这个系列文…

OAuth 2.0实现统一认证

OAuth 2.0协议概念: OAuth 是 Open Authorization 的简写。OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 OAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第…

开源:特殊的垄断

免责声明:本博客旨在分享我对开源策略的理解和体会,不代表任何组织或机构的立场或观点,也不构成任何商业或投资的建议或担保。本博客的内容可能存在错误或遗漏,也可能随着时间的推移而变得过时或不适用。请在使用或依赖本博客的内…

Google play的企业开发者账号比个人号上包成功率更高?

众所周知,Google play作为全球最大的Android应用市场,是开发者们推广应用的首选平台。Google play平台提供了两种账号类型:个人开发者和企业开发者,开发者们可以选择创建个人开发者账号或者企业开发者账号进行应用上架。 不过&am…

Stable Diffusion WebUI扩展sd-webui-controlnet之Canny

什么是Canny? 简单来说,Canny是计算机视觉领域的一种边缘检测算法。 关于Canny算法大家可以去看我下面这篇博客,里面详细介绍了Canny算法的原理以及代码演示。 OpenCV竟然可以这样学!成神之路终将不远(十五)_maxminval opencv-CSDN博客文章浏览阅读111次。14 图像梯度…

论文阅读——Detection Hub(cvpr2023)

Detection Hub: Unifying Object Detection Datasets via Query Adaptation on Language Embedding 一、要解决的问题 大规模数据集可以提高模型性能,但是当训练多类别单一模型时,大规模数据集不能用在目标检测任务上,因为两个困难&#xff1…

latex cite命令、款式

UTS SEDE 的 latex 模板 [1,2] 用 biblatex,默认用的引用格式是 ieee。然而 Research Foundation 的 literature review 这个作业要用 APA 7,想在保留 biblatex 的情况下区分有括号和无括号两种引用格式,即 [3] 中 \citet、\citep 的分别。 …

基于selenium的pyse自动化测试框架

介绍: pyse基于selenium(webdriver)进行了简单的二次封装,比selenium所提供的方法操作更简洁。 特点: 默认使用CSS定位,同时支持多种定位方法(id\name\class\link_text\xpath\css&#xff09…

Next.js 项目——从入门到入门(Eslint+Prettier)

Next.js官方文档地址 什么是 Next.js 这是一个用于生产环境的 React 框架。 Next.js 为您提供生产环境所需的所有功能以及最佳的开发体验:包括静态及服务器端融合渲染、 支持 TypeScript、智能化打包、 路由预取等功能,无需任何配置。 功能&#xff…