package browser import ( "fmt" "os" ) // CdpClose cierra la conexion WebSocket CDP y, si pid > 0, mata el proceso Chrome. // Siempre intenta cerrar la conexion aunque el kill falle, y viceversa. // Retorna el primer error encontrado. func CdpClose(c *CDPConn, pid int) error { var firstErr error if c != nil && !c.closed { c.closed = true if err := c.conn.Close(); err != nil { firstErr = fmt.Errorf("cdp close: cerrar websocket: %w", err) } } if pid > 0 { proc, err := os.FindProcess(pid) if err != nil { if firstErr == nil { firstErr = fmt.Errorf("cdp close: encontrar proceso %d: %w", pid, err) } } else { if err := proc.Kill(); err != nil { if firstErr == nil { firstErr = fmt.Errorf("cdp close: matar proceso %d: %w", pid, err) } } } } return firstErr }