Skip to content

Commit c3246ee

Browse files
committed
81: Notes and examples of using os.Exit(..)
1 parent 589c40c commit c3246ee

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,4 @@ go run . -module closingchannels
7171
* [78 - Spawning Processes](spawningprocesses/main.go)
7272
* [79 - Execing Processes](execingprocesses/main.go)
7373
* [80 - Signals](signals/main.go)
74+
* [81 - Exit](exit/main.go)

exit/main.go

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package exit
2+
3+
import (
4+
"fmt"
5+
"os"
6+
)
7+
8+
// To exit a program immediately with a particular exit code
9+
// `os.Exit` can be used. However it will not run defers.
10+
func Run() {
11+
exitWithoutDefer(3)
12+
}
13+
14+
func exitWithoutDefer(code int) {
15+
defer func() { fmt.Println("I won't run!") }()
16+
os.Exit(code)
17+
}

main.go

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/symonk/learning-golang/defers"
1818
"github.com/symonk/learning-golang/errors"
1919
"github.com/symonk/learning-golang/execingprocesses"
20+
"github.com/symonk/learning-golang/exit"
2021
"github.com/symonk/learning-golang/forloop"
2122
"github.com/symonk/learning-golang/functions"
2223
"github.com/symonk/learning-golang/generics"
@@ -133,5 +134,6 @@ func buildMap() map[string]func() {
133134
fnMap["spawningprocesses"] = spawningprocesses.Run
134135
fnMap["execingprocesses"] = execingprocesses.Run
135136
fnMap["signals"] = signals.Run
137+
fnMap["exit"] = exit.Run
136138
return fnMap
137139
}

0 commit comments

Comments
 (0)