- Browse
- » Go systems programming: master Linux and Unix system level programming with Go
Go systems programming: master Linux and Unix system level programming with Go
Author
Publisher
Packt Publishing
Publication Date
2017.
Language
English
Description
Loading Description...
Subjects
Subjects
computer programming
COMPUTERS
COMPUTERS -- Operating Systems -- Linux
COMPUTERS -- Programming -- General
COMPUTERS -- Software Development & Engineering -- General
General
Go (Computer program language)
Go (Langage de programmation)
Linux
Operating Systems
Programmation (Informatique)
Programming
Software Development & Engineering
UNIX (Computer file)
COMPUTERS
COMPUTERS -- Operating Systems -- Linux
COMPUTERS -- Programming -- General
COMPUTERS -- Software Development & Engineering -- General
General
Go (Computer program language)
Go (Langage de programmation)
Linux
Operating Systems
Programmation (Informatique)
Programming
Software Development & Engineering
UNIX (Computer file)
Table of Contents
From the eBook
Cover
Title Page
Copyright
Credits
About the Author
About the Reviewer
www.PacktPub.com
Customer Feedback
Table of Contents
Preface
Chapter 1: Getting Started with Go and Unix Systems Programming
The structure of the book
What is systems programming?
Learning systems programming
About Go
Getting ready for Go
Two useful Go tools
Advantages and disadvantages of Go
The various states of a Unix process
Exercises
Summary
Chapter 2: Writing Programs in Go
Compiling Go code
Checking the size of the executable file
Go environment variables
Using command-line arguments
Finding the sum of the command-line arguments
User input and output
Getting user input
Printing output
Go functions
Naming the return values of a Go function
Anonymous functions
Illustrating Go functions
The defer keyword
Using pointer variables in functions
Go data structures
Arrays
Slices
Maps
Converting an array into a map
Structures
Interfaces
Creating random numbers
Exercises
Summary
Chapter 3: Advanced Go Features
Error handling in Go
Functions can return error variables
About error logging
The addCLA.go program revisited
Pattern matching and regular expressions
Printing all the values from a given column of a line
Creating summaries
Finding the number of occurrences
Find and replace
Reflection
Calling C code from Go
Unsafe code
Comparing Go to other programming languages
Analysing software
Using the strace(1) command-line utility
The DTrace utility
Disabling System Integrity Protection on macOS
Unreachable code
Avoiding common Go mistakes
Exercises
Summary
Chapter 4: Go Packages, Algorithms, and Data Structures
About algorithms
The Big O notation
Sorting algorithms.
The sort.Slice() function
Linked lists in Go
Trees in Go
Developing a hash table in Go
About Go packages
Using standard Go packages
Creating your own packages
Private variables and functions
The init() function
Using your own Go packages
Using external Go packages
The go clean command
Garbage collection
Your environment
Go gets updated frequently!
Exercises
Summary
Chapter 5: Files and Directories
Useful Go packages
Command-line arguments revisited!
The flag package
Dealing with directories
About symbolic links
Implementing the pwd(1) command
Developing the which(1) utility in Go
Printing the permission bits of a file or directory
Dealing with files in Go
Deleting a file
Renaming and moving files
Developing find(1) in Go
Traversing a directory tree
Visiting directories only!
The first version of find(1)
Adding some command-line options
Excluding filenames from the find output
Excluding a file extension from the find output
Using regular expressions
Creating a copy of a directory structure
Exercises
Summary
Chapter 6: File Input and Output
About file input and output
Byte slices
About binary files
Useful I/O packages in Go
The io package
The bufio package
File I/O operations
Writing to files using fmt.Fprintf()
About io.Writer and io.Reader
Finding out the third column of a line
Copying files in Go
There is more than one way to copy a file!
Copying text files
Using io.Copy
Reading a file all at once!
An even better file copy program
Benchmarking file copying operations
Developing wc(1) in Go
Counting words
The wc.go code!
Comparing the performance of wc.go and wc(1)
Reading a text file character by character
Doing some file editing!
Interprocess communication.
Sparse files in Go
Reading and writing data records
File locking in Go
A simplified Go version of the dd utility
Exercises
Summary
Chapter 7: Working with System Files
Which files are considered system files?
Logging in Go
Putting data at the end of a file
Altering existing data
About log files
About logging
Logging facilities
Logging levels
The syslog Go package
Processing log files
File permissions revisited
Changing file permissions
Finding other kinds of information about files
More pattern matching examples
A simple pattern matching example
An advanced example of pattern matching
Renaming multiple files using regular expressions
Searching files revisited
Finding the user ID of a user
Finding all the groups a user belongs to
Finding files that belong or do not belong to a given user
Finding files based on their permissions
Date and time operations
Playing with dates and times
Reformatting the times in a log file
Rotating log files
Creating good random passwords
Another Go update
Exercises
Summary
Chapter 8: Processes and Signals
About Unix processes and signals
Process management
About Unix signals
Unix signals in Go
The kill(1) command
A simple signal handler in Go
Handling three different signals!
Catching every signal that can be handled
Rotating log files revisited!
Improving file copying
Plotting data
Unix pipes in Go
Reading from standard input
Sending data to standard output
Implementing cat(1) in Go
The plotIP.go utility revisited
Unix sockets in Go
RPC in Go
Programming a Unix shell in Go
Yet another minor Go update
Exercises
Summary
Chapter 9: Goroutines
Basic Features
About goroutines
Concurrency and parallelism
The sync Go packages.
A simple example
Creating multiple goroutines
Waiting for goroutines to finish their jobs
Creating a dynamic number of goroutines
About channels
Writing to a channel
Reading from a channel
Explaining h1s.go
Pipelines
A better version of wc.go
Calculating totals
Doing some benchmarking
Exercises
Summary
Chapter 10: Goroutines
Advanced Features
The Go scheduler
The sync Go package
The select keyword
Signal channels
Buffered channels
About timeouts
An alternative way to implement timeouts
Channels of channels
Nil channels
Shared memory
Using sync.Mutex
Using sync.RWMutex
The dWC.go utility revisited
Using a buffered channel
Using shared memory
More benchmarking
Detecting race conditions
About GOMAXPROCS
Exercises
Summary
Chapter 11: Writing Web Applications in Go
What is a web application?
About the net/http Go package
Developing web clients
Fetching a single URL
Setting a timeout
Developing better web clients
A small web server
The http.ServeMux type
Using http.ServeMux
The html/template package
About JSON
Saving JSON data
Parsing JSON data
Using Marshal() and Unmarshal()
Using MongoDB
Basic MongoDB administration
Using the MongoDB Go driver
Creating a Go application that displays MongoDB data
Creating an application that displays MySQL data
A handy command-line utility
Exercises
Summary
Chapter 12: Network Programming
About network programming
About TCP/IP
About TCP
The TCP handshake!
About UDP and IP
About Wireshark and tshark
About the netcat utility
The net Go standard package
Unix sockets revisited
A Unix socket server
A Unix socket client
Performing DNS lookups
Using an IP address as input
Using a host name as input.
Getting NS records for a domain
Developing a simple TCP server
Developing a simple TCP client
Using other functions for the TCP server
Using alternative functions for the TCP client
Developing a simple UDP server
Developing a simple UDP client
A concurrent TCP server
Remote procedure call (RPC)
An RPC server
An RPC client
Exercises
Summary
Index.
Excerpt
Loading Excerpt...
Author Notes
Loading Author Notes...
More Details
ISBN
9781787123151
Reviews from GoodReads
Loading GoodReads Reviews.