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.mzph.cn/news/133924.shtml

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

相关文章

mediapipe流水线分析 二

目标检测 Graph 一 流水线上游输入处理 1 TfLiteConverterCalculator 将输入的数据转换成tensorflow api 支持的Tensor TfLiteTensor 并初始化相关输入输出节点 ,该类的业务主要通过 interpreter std::unique_ptrtflite::Interpreter interpreter_ nullptr; 实现…

Python教程---Python基础语法2

1.变量和字面量(常量) 字面量就是一个一个的值,比如:1,2,3,4,5,6,‘HELLO’ 字面量所表示的意思就是它的字面的值,在程序中可以直接使用字面量 变量(varia…

利用大语言模型(LLM )提高工作效率

日常工作就是面向 google/ 百度编程,除了给变量命名是手动输入,大多时候就是通过搜索引擎拷贝别人的代码,或者找到旧项目一段代码拷贝过来使用。这无疑是开发人员的真实写照;然而,通过搜索引擎搜索答案,无疑…

Go 面向对象,多态

面向对象 工程结构 新建一个oop.go package _oop // Package _oop 引用名称import ("fmt""strconv" )// GIRL 常量 const (// GIRL 自增GIRL Gender iotaFIRSTSECONDTHIRD )type Gender uint8 // 无符号的8位整数类型// User 结构体 type User struct…

Vue 跨域的两种解决方式

一、通过 proxy 解决跨域 1.1 baseURL 配置 对 axios 二次封装时,baseURL 设置为 /api。 const serviceAxios axios.create({baseURL: /api,timeout: 10000, // 请求超时设置withCredentials: false, // 跨域请求是否需要携带 cookie });1.2 vue.config.js 配置…

SQLite 3.44.0 发布!

SQLite 开发团队于 2023 年 11 月 01 日发布了 SQLite 3.44.0 版本,带来了一些 SQL 和优化器增强,本文给大家做一个简要分分析。 新增 concat() 函数 新版本增加了两个连接字符串的函数:concat() 以及 concat_ws()。它们可以兼容 PostgreSQ…

代码冲突解决

远程仓库修改 本地代码修改 接下来我们push一下 如果使用IDE 冲突内容如下: 我们可以使用自带的工具进行修改 我们选择接受自己改动的即可 如果使用git工具怎么去处理呢 远程分支是这样 本地是这样的 add和commit之后,再pull,最后pus…

若依:用sqlite3随便掰饬掰饬

“若依”这个开源项目,感觉是外包公司标配了啊,都在用。从README感觉像是某位阿里员工的工作之余的小整理。对于SprintBoot,个人感觉太重型,不过人家生态起来了,不是那么容易玩完。但是随着VMware被博通收购&#xff0…

关键词搜索亚马逊商品数据接口(标题|主图|SKU|价格|优惠价|掌柜昵称|店铺链接|店铺所在地)

亚马逊提供了API接口来获取商品数据。其中,关键词搜索亚马逊商品接口(item_search-按关键字搜索亚马逊商品接口)可以用于获取按关键字搜索到的商品数据。 通过该接口,您可以使用API Key和API Secret来认证身份,并使用…

BP神经网络的数据分类——语音特征信号分类

大家好,我是带我去滑雪! BP神经网络,也称为反向传播神经网络,是一种常用于分类和回归任务的人工神经网络(ANN)类型。它是一种前馈神经网络,通常包括输入层、一个或多个隐藏层和输出层。BP神经网…

关于iOS:如何使用SwiftUI调整图片大小?

How to resize Image with SwiftUI? 我在Assets.xcassets中拥有很大的形象。 如何使用SwiftUI调整图像大小以缩小图像? 我试图设置框架,但不起作用: 1 2 Image(room.thumbnailImage) .frame(width: 32.0, height: 32.0) 在Image上应用…

浅析刚入门Python初学者的注意事项

文章目录 一、注意你的Python版本1.print()函数2.raw_input()与input()3.比较符号&#xff0c;使用!替换<>4.repr函数5.exec()函数 二、新手常遇到的问题1、如何写多行程序&#xff1f;2、如何执行.py文件&#xff1f;3、and&#xff0c;or&#xff0c;not4、True和False…

Unity项目转微信小游戏保姆教程,繁杂问题解决,及微信小游戏平台简单性能测试

前言 借着某人需求&#xff0c;做了一波简单的技术调研&#xff1a;将Unity项目转换为微信小游戏。 本文主要内容&#xff1a;Unity转换小游戏的步骤&#xff0c;遇到问题的解决方法&#xff0c;以及简单的性能测试对比 微信小游戏的限制 微信小游戏对程序包体大小有严格限制…

Manopt使用

本文记录一些黎曼流型的优化工具箱的使用 入手 安装 https://www.manopt.org/tutorial.html#gettingstarted

JavaScript高级编程

JavaScript是以对象为基础、函数为模型、原型为继承的基于对象的开发模式。JavaScript不是面向对象的编程语言&#xff0c;在ECMAScript 6规范之前&#xff0c;JavaScript没有类的概念&#xff0c;仅允许通过构造函数模拟类&#xff0c;通过原型实现继承。ECMAScript 6新增类和…

飞桨平台搭建PP-YOLOE模型

一、创建项目 此博客仅是运行PP-YOLOE源码&#xff0c;这里以变压器渗漏数据集为例COCO数据集太大了&#xff0c;跑不动&#xff0c;V100训练预估计得7天左右&#xff0c;即便是A100也得4天半&#xff0c;变压器渗漏油数据集跑一个小时左右&#xff0c;还可以接受&#xff0c;…

公司团建小游戏开发小程序游戏互动小游戏

在现代工作环境中&#xff0c;团队合作和员工士气是取得成功的关键因素。为了增强团队合作、提升员工士气&#xff0c;并促进员工之间的互动&#xff0c;公司团建小游戏成为了一种备受欢迎的方式。本文将探讨如何开发公司团建小游戏&#xff0c;以达到这些目标。 1. 游戏概念 …

京东数据分析(京东销量):2023年9月京东投影机行业品牌销售排行榜

鲸参谋监测的京东平台9月份投影机市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据数据显示&#xff0c;9月份&#xff0c;京东平台投影机的销量为13万&#xff0c;环比下滑约17%&#xff0c;同比下滑约25%&#xff1b;销售额将近2.6亿&#xff0c;环比下…

JVM虚拟机:如何查看自己的JVM默认的垃圾回收器

只需要在程序运行的时候指定下面的参数就可以看到当前自己的JVM默认的垃圾回收器是什么&#xff1f;如下所示&#xff1a; 如上所示&#xff0c;默认使用的是G1回收器&#xff0c;这是我的电脑&#xff0c;因为我的电脑安装jdk的版本是1.9 如果你的jdk的版本是1.8&#xff0c;那…

HTML和CSS入门学习

目录 一.HTML 二.CSS 1.CSS作用&#xff1a;美化页面 2.CSS语法 【1】CSS语法规范 【2】如何插入样式表 3.CSS选择器 4.CSS设置样式属性--设置html各种标签的属性 【1】文本属性--设置整段文字的样式 【2】字体属性--设置单个字的样式 【3】链接属性--设置链接的样式…