Golang创建daemon程序

## daemon的概念 守护进程(daemon)就是一直在后台运行的进程,它没有控制终端,无法和前台的用户交互。当我们打开一个终端时会创建一个session会话(shell),从用户登录开始到用户退出为止,这段时间内在该终端执行的进程都属于这一个会话。一个会话一般包含一个前台进程组、一个后台进程组和一个会话首进程(shell程序本身)。 例如用以下命令启动5个进程: > $ proc1 | proc2 & > $ proc3 | proc4 | proc5 > proc1和proc2属于同一个...阅读全文

shanks's blog 2016-06-23 15:24:12 shanks

golang的package

golang的packagegolang的package和其他语言的组织方式完全不同,刚开始接触时,很不适应。我觉得go的package有两个很大的特点:1、go的package超越了文件的概念;2、go的package是以绝对路径GOPATH来寻址的,不要用相对路径来import在同一个package里,多个文件被go编译器看作是一个文件一样,因此,这多个文件中不能出现相同的全局变量和函数,一个例外是init函数;而同一个package的不同文件可以直接引用相互之间的数据。阅读全文

ITEYE博客 7 小时前 stephen830

ubuntu安装go

1,源码编译 apt-get update; apt-get install -y gcc libc6-dev; apt-get install -y mercurial; apt-get install -y git; hg clone -u release https://code.google.com/p/go; cd go/src && ./all.bash; 2,apt-get 安装 I found a repo that has the latest versions: https:...阅读全文

CSDN博客 2014-01-24 11:47 leonpengweicn

初识Go(8)

并发 goroutinegoroutine 是 Go 并行设计的核心。goroutine 说到底其实就是线程,但是他比线程更小,十几个 goroutine 可能体现在底层就是五六个线程,Go 语言内部帮你实现了这些 goroutine之间的内存共享。执行 goroutine 只需极少的栈内存(大概是 4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。 goroutine 比 thread 更易用、更高效、更轻便。goroutine 是通过 Go 的 runtim...阅读全文

博客园 2014-12-24 17:05 huangxiaohen

初识Go(4)

defer Go 语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个 defer 语句。 当函数执行到最后时,这些 defer 语句会按照逆序执行,最后该函数返回。特别是当你在进 行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不 然很容易造成资源泄露等问题。 func ReadWrite() bool { file.Open("file") defer file.Close() if failureX { return false } if fa...阅读全文

博客园 2014-12-24 10:56 huangxiaohen

Go语言中的字符和字符串

Go语言中的字符 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。 下面用一个简单的程序来演示字符类型: package main import ( "fmt" "reflect" ) func main() { r := '我' fmt.Printf("%q的类型为:%t 二进制为:%b\n", r, r, r) rType := reflect.TypeOf(r).Kind() fmt.Printf("r的实际类型为:%s\n", rType) } 程序输出:...阅读全文

博客园 2014-12-28 19:21 rubyer

[转Go-简洁的并发 ]

http://www.yankay.com/go-clear-concurreny/ Posted on 2012-11-28 by yankay 多核处理器越来越普及。有没有一种简单的办法,能够让我们写的软件释放多核的威力?是有的。随着Golang, Erlang, Scala等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式有一个极其简洁的内核,还有在此之上丰富的外延。可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。 ...阅读全文

博客园 2014-12-28 22:21 freebird92

Linux下使用goagent

Linux下使用goagent 分类: linux 2013-04-18 11:16 21614人阅读 评论(4) 收藏 举报 说到穿越长城的软件有很多,不过最近最有名而且免费的就非goagent莫属了,goagent是利用谷歌的GAE服务来翻越长城的,具有速度快,稳定的特点,正好今天我的ssh代理过期,于是准备以后使用goagent来FQ。 1:申请appengine.google.com的个人apppid 首先登录appengine.google.com,申请个人apppid,它将在Goag...阅读全文

使用Go语言一段时间的感受

作者 openkk 2012-03-04 18:26:58 文/Windstorm 有一段时间没更新了。最近在忙一个 Server+Client 的项目,Client 是 Android 手机,大概也就是几十的规模。Server 是纯 Golang 实现,没有 apache 或者 ngix 这种 web server,也没有数据库,自己写了个文件管理 module,handle 这种小规模的服务没问题。算下来接触 Golang 也有四个多月了,断断续续写了一些东西,这里纪录一下心得吧 先大概说下...阅读全文

博客园 2014-12-30 05:35 u0mo5

topic 1: golang file operation

1. kinds of operation In general, there are several kinds of file operations as bellow. (1) Create file/folder, Open file, Close file, Remove file/folder, path (2) Read all data at a time; Write all data at a time; (3) Read Line, read with cursor; wr...阅读全文

博客园 2014-12-29 23:21 harrysun

【玩转Golang】 自定义json序列化对象时,非法字符错误原因

由于前台web页面传来的日期对象是这样的格式“2010-11-03 15:23:22”,所以我安装网上查来的办法,自定义包装了time.Time对象,实现自己的Marshal和UnMarshal方法 type DateTime struct { time.Time } const ctLayout = "2006-01-02 15:04:05" const ctLayout_nosec = "2006-01-02 15:04" const ctLayout_date = "2006-01-02"...阅读全文

博客园 2014-12-30 08:26 dajianshi

【玩转Golang】 通过组合嵌入实现代码共用

应用开发中的一个常见情景,为了避免简单重复,需要在基类中实现共用代码,着同样有助于后期维护。 如果在以往的支持类继承的语言中,比如c++,Java,c#等,这很简单!可是go不支持继承,只能mixin嵌入,且看下面的代码: type ManKind interface{ Say(s string); GetMouth()string } type Man struct{ ManKind } func NewMan() ManKind{ return &Man{}; } func (this *M...阅读全文

博客园 2014-12-29 13:52 dajianshi

使用golang 开发的 andriod应用

最近在捣鼓一个东东,就是使用golang开发andriod应用.说起来简单操作起来还挺麻烦,中间又学习了很多东西.比如ubuntu,docker,angular,ionic,jquery mobile,amazeui,avalon,andriod studio.对每样都东西都有个了解后,才完成使用golang 开发andriod应用的任务.虽然有几个技术项目没有用,但毕竟选择合适的需要对比. 这次捣鼓收获很多,对上面几个技术都有一个不错的了解,不说精通,但至少入门了. 下面我就把这次主要的体会写...阅读全文

博客园 2014-12-24 11:25 zitsing

[golang学习] goroutine调度

这两天有些闲功夫, 学习下golang, 确实非常简洁. 不过有些缺憾. 在我的测试中. golang的调度(goroutine)似乎不是非常好. func say(k int) { fmt.Println(k) } func main() { runtime.GOMAXPROCS(2) for i := 0; i < 100; i++ { go say(i) } for { } } 这段测试代码是有bug的. 一开始我并没有设置 runtime.GOMAXPROCS(2) 则由于for循环导致...阅读全文

博客园 2014-12-28 01:27 lingdhox

[golang学习] 在idea中code & debug

idea 虽然审美倒退了n年. 不过功能还是相当好用的. idea 的go插件堪称最好的go ide. 1. 语法高亮支持 2. 智能提示 3. 跳转定义(反跳转回来) 4. 集成debugger 还有重构等等功能也不错. 这些都是用起来让人很舒服的功能. 你要是用vim/emacs/sublime啥的. 当我没说. 很多人可能都不知道golang 代码可以debug. 很多人用console gdb命令式的调试. 如果不需要界面化的调试器, 也可以略过了. 1. 语法高亮支持 配色看起来挺搓的...阅读全文

博客园 2014-12-28 13:39 lingdhox

golang daemon

package main import ( "fmt" "log" "os" "runtime" "syscall" "time" ) func daemon(nochdir, noclose int) int { var ret, ret2 uintptr var err syscall.Errno darwin := runtime.GOOS == "darwin" // already a daemon if syscall.Getppid() == 1 { return 0 } // f...阅读全文

开源中国博客 2014-12-30 16:08 chunhei2008