Use a better package name for utility functions.
This commit is contained in:
		
							
								
								
									
										38
									
								
								osutils/reaper.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								osutils/reaper.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| package osutils | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
|  | ||||
| 	"github.com/opencontainers/runc/libcontainer/utils" | ||||
| ) | ||||
|  | ||||
| // Exit is the wait4 information from an exited process | ||||
| type Exit struct { | ||||
| 	Pid    int | ||||
| 	Status int | ||||
| } | ||||
|  | ||||
| // Reap reaps all child processes for the calling process and returns their | ||||
| // exit information | ||||
| func Reap() (exits []Exit, err error) { | ||||
| 	var ( | ||||
| 		ws  syscall.WaitStatus | ||||
| 		rus syscall.Rusage | ||||
| 	) | ||||
| 	for { | ||||
| 		pid, err := syscall.Wait4(-1, &ws, syscall.WNOHANG, &rus) | ||||
| 		if err != nil { | ||||
| 			if err == syscall.ECHILD { | ||||
| 				return exits, nil | ||||
| 			} | ||||
| 			return exits, err | ||||
| 		} | ||||
| 		if pid <= 0 { | ||||
| 			return exits, nil | ||||
| 		} | ||||
| 		exits = append(exits, Exit{ | ||||
| 			Pid:    pid, | ||||
| 			Status: utils.ExitStatus(ws), | ||||
| 		}) | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Jaana Burcu Dogan
					Jaana Burcu Dogan