Linux에서 http 서버의 우아한 종료
http 서버를 실행할 때 서버가 종료되기 전에 특정 작업을 수행해야 하는 경우가 많습니다. 이는 Unix 신호 메커니즘을 사용하여 수행할 수 있습니다.
이를 수행하는 한 가지 방법은 Go에서 os.Signal 패키지를 사용하는 것입니다.
package main import ( "fmt" "log" "net/http" "os" "os/signal" ) func main() { // Create a new http server. http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") }) go func() { // Start the server. log.Fatal(http.ListenAndServe(":8080", nil)) }() // Create a channel to receive os signals. sigchan := make(chan os.Signal) signal.Notify(sigchan, os.Interrupt) // Block until a signal is received. <-sigchan // Perform shutdown operations. log.Println("Shutting down server...") // Close the server. err := http.CloseServer(http.DefaultServer) if err != nil { log.Fatal(err) } // Exit the program. os.Exit(0) }
이 코드는 새 http 서버를 생성하고 포트 8080에서 수신합니다. 프로그램이 인터럽트 신호(예: Ctrl C)를 수신하면 종료 작업을 수행합니다. 이 경우 서버를 닫고 종료하는 작업이 포함됩니다. 프로그램입니다.
위 내용은 Linux에서 HTTP 서버의 정상 종료를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!