首页 > TAG信息列表 > syscall

优雅退出在Golang中的实现

背景 为什么需要优雅关停 在Linux下运行我们的go程序,通常有这样2种方式: 前台启动。打开终端,在终端中直接启动某个进程,此时终端被阻塞,按CTRL+C退出程序,可以输入其他命令,关闭终端后程序也会跟着退出。 $ ./main $ # 按CTRL+C退出 后台启动。打开终端,以nohup来后台启动某个进

IPC Namespace

IPC Namespace IPC Namespace用来隔离System V IPC和POSIX message queues,每一个IPC Namespace都有自己的System V IPC和POSIX message queue。 package main import( "os/exec" "syscall" "os" "log" ) func main(){ cmd:=exec.Command("s

golang windows endless 运行报错 undefined: syscall.SIGUSR1

为了gin服务的热更新,采用了 endless+fresh的方案,安装endless后无法在windows本地调试,采用以下解决方案就好了 解决地址:golang windows 运行报错 undefined: syscall.SIGUSR1 – 1995er goland 无法编译输出 Compilation finished with exit code 0_J_Lee-CSDN博客   win 下没有

git出现OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054错误

解决方案一:将https替换成git 项目.git 文件夹里面的config文件,修改里面的 url 地址,将原来的 HTTP 地址改为 SSH地址。 解决方案二:两条命令 git config http.sslVerify "false" git config --global http.sslVerify "false"

关闭Command启动的进程

在用exec包调用的其他进程后如何关闭结束,可以使用context包的机制进行管理,context包的使用详见:https://godoc.org/context exec.CommandContext方发实现了context,通过context可以对exec启动的进程结束。 隐藏程序自身黑窗口的方法:go build -ldflags="-H windows" 隐藏子进程黑窗口

2. Lab syscall: system calls

https://pdos.csail.mit.edu/6.S081/2021/labs/syscall.html 1. System call tracing 1.1 要求 In this assignment you will add a system call tracing feature that may help you when debugging later labs. You'll create a new trace system call that will contro

Go 文件创建和带缓冲区写文件

os package - os - pkg.go.devhttps://pkg.go.dev/os#OpenFile os.OpenFile 在写文件的时候要用一个函数OpenFile,这里面有三个参数。这个函数是属于os包里面的一个函数。 func OpenFile(name string, flag int, perm FileMode) (*File, error) flag 说明∶os.OpenFile是一个更

Android netlink&svc 获取 Mac方法深入分析

前言 今天主要介绍的是通过内核通讯的方式获取设备网卡mac指纹,主要通过netlink的方式和内核通讯去获取mac网卡地址 。 这种方式可以直接绕过android的权限。 在不给app授权的时候也可以直接获取到网卡信息。因为很难进行mock,所以很多大厂app也都是采用这种办法去获取。 netli

goroutine和chan

package main import ( "errors" "fmt" "reflect" "sync" "syscall" "unsafe" ) var wg sync.WaitGroup var once sync.Once type Str struct { num int pid int } type hchan struct { qcount ui

Gin框架系列之优雅重启或关闭

在gin中通过如下代码可以正常的启动一个服务: package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { router := gin.Default() router.GET("/index", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{

Build Containers From Scratch in Go用Go从零实现容器

转载自 Ali Josie-Build Containers From Scratch in Go 2020/9/17,在过去的几年里,容器的使用量显著增加。容器的概念已经出来好多年了,但是由于Docker易于使用的命令行使得容器从2013年开始在开发者里流行(我觉得主要是可复用的镜像)。 在这个系列中,我将尝试演示容器底层是如何工作的

Go get LibreSSL SSL_connect: SSL_ERROR_SYSCALL

# cd .; git clone -- https://github.com/gogf/gf /Users/flame/Downloads/GoCode/src/github.com/gogf/gf Cloning into '/Users/flame/Downloads/GoCode/src/github.com/gogf/gf'... fatal: unable to access 'https://github.com/gogf/gf/': LibreSSL

造轮子-strace(二)实现

这一篇文章会介绍strace如何工作,再稍微深入介绍一下什么是system call。再介绍一下ptrace、wait(strace依赖的system call)。最后再一起来造个轮子,动手用代码实现一个strace。聊天框回复“strace”,可以获取本文源码。 上一篇,我们介绍了strace工具,strace是非常实用的调试、分析工具,

System-call 系统调用

一、系统调用过程 1. 用户在进行系统调用时,通过传递一个系统调用编号,来告知内核,它所请求的系统调用,内核通过这个编号进而找到对应的处理系统调用的C函数。这个系统编号,在 x86 架构上,是通过 eax 寄存器传递的。 2. 系统调用的过程跟其他的异常处理流程一样,包含下面几个步骤:(1) 将当

Go项目实现优雅关机与平滑重启

Demo快速上手 优雅关机 package main import ( "context" "github.com/gin-gonic/gin" "log" "net/http" "os" "os/signal" "syscall" "time" ) // 实现优雅关机和平滑重启 func main() { router :=

syscall SYSCALL_DEFINE*()实现

syscall SYSCALL_DEFINE*()实现 include/linux/syscalls.h #define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__) #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINE

git clone LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

通过百度搜寻 解决方案是是git config http.sslVerify “false” 无效 原来是github没有登录 ,登录成功之后就可以了

2021-10-31

2021-2022-1 20212825 《Linux内核原理与分析》第六周作业 一、实验步骤 1.给MenuOS增加命令 cd LinuxKernel rm menu -rf 删除当前的menu目录 git clone https://github.com/mengning/menu.git 重新克隆一个新版本的menu cd menu 进入menu make rootfs 运行make roo

【MIPS】P2课下零碎

1..word使用 .word 0:63 并非划出了64个 4Byte 地址,而是63个,可从编译后Label窗口中查看 2.syscall读取字符 li $v0, 12 syscall 此时\n也会被读入,需考虑类似C中%c的处理手法。 输入时连续输入内容不加回车,或者每次读取调用两次syscall,第二次读取\n并不处理丢弃

【MIPS】P2课下零碎

1..word使用 .word 0:63 并非划出了64个 4Byte 地址,而是63个,可从编译后Label窗口中查看 2.syscall读取字符 li $v0, 12 syscall 此时\n也会被读入,需考虑类似C中%c的处理手法。 输入时连续输入内容不加回车,或者每次读取调用两次syscall,第二次读取\n并不处理丢弃

2021-2022-1 20212823《Linux内核原理与分析》第六周作业

实验五 分析system_call中断处理过程 一.给MenuOS增加命令 cd LinuxKernel rm menu -rf git clone https://github.com/mengning/menu.git cd menu make rootfs 在test.c文件中增加Hello函数和在main函数中增加MenuConfig语句。 二.使用gdb跟踪系统调用内核函数 cd

golang windows endless 运行报错 undefined: syscall.SIGUSR1

为了gin服务的热更新,采用了 endless+fresh的方案,安装endless后无法在windows本地调试,采用以下解决方案就好了 解决地址:golang windows 运行报错 undefined: syscall.SIGUSR1 – 1995er goland 无法编译输出 Compilation finished with exit code 0_J_Lee-CSDN博客

git出现OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054错误

解决方案一:将https替换成git 第一次克隆的错误信息: Administrator@WIN-QIJ6CH8JVRR MINGW64 /f/BookProject $ git clone https://github.com/fenixsoft/microservice_arch_springcloud.git Cloning into 'microservice_arch_springcloud'... fatal: unable to access 'https:/

闰年判断(基于mips汇编语言)

实现满足下面功能的汇编程序: 输入一个年份 ,判断  是否为闰年。 输入格式 输入一个整数 。 输出格式 输出 0 或者 1。输出 0 代表  不是闰年,输出 1 代表  是闰年。 约定 1、n为int范围 2、请勿使用 .globl main 3、请使用 syscall 结束程序: li $v0, 10 syscall .t

golang signal.Notify 信号,如何优雅的退出

参考链接:https://www.cnblogs.com/landv/p/13139127.html Notify函数让signal包将输入信号转发到c。如果没有列出要传递的信号,会将所有输入信号传递到c;否则只传递列出的输入信号。 signal包不会为了向c发送信息而阻塞(就是说如果发送时c阻塞了,signal包会直接放弃):调用者应该保证c有