Size: a a a

2020 May 27

VI

Vadim Inshakov in Go-go!
Aleksandr
исходя из формулировки - нет)
можно подробнее?) я просто не понимаю, что произойдет. мы бесконечно получаем дескриптор одного и того же файла. к чему это приведет?
источник

A

Aleksandr in Go-go!
хотя бы и к потреблению ресурсов
источник

A

Aleksandr in Go-go!
какую проблему решает циклическое получение дескриптора одного и того же файла?
источник

J

Je in Go-go!
Vadim Inshakov
можно подробнее?) я просто не понимаю, что произойдет. мы бесконечно получаем дескриптор одного и того же файла. к чему это приведет?
ты получаешь каждый раз новый дескриптор одного и того же файла, пока не кончится память, а так ничего кроме нагрузки на GC
источник

VI

Vadim Inshakov in Go-go!
Aleksandr
какую проблему решает циклическое получение дескриптора одного и того же файла?
я просто пытаюсь понять, нужно исправлять такое или нет. в коде глобальная переменная f *os.File, в неё передается результат fs.Open. но закрытия не происходит. и это повторяется, хоть и не в цикле, но постоянно
источник

VI

Vadim Inshakov in Go-go!
Je
ты получаешь каждый раз новый дескриптор одного и того же файла, пока не кончится память, а так ничего кроме нагрузки на GC
запустил, уже минуты две в бесконечном цикле нормально работает, память не меняется:

package main

import (
 "fmt"
 "os"
)

func main() {
 var f *os.File
 var err error
 for {
   f, err = os.Open("input.txt")
   if err != nil {
     fmt.Errorf(err.Error())
   }
   _ = f
 }
}
источник

J

Je in Go-go!
Здесь память GC тебе возвращает, но поскольку нет Close, ОС будет считать файл открытым, увеличивая счетчик открытых дескрипторов - этот лимит обычно устанавливается тоже. Смотри ulimit
источник

ВС

Владимир Столяров... in Go-go!
Так то у os.File есть финализатор, который вызывает close
источник

VI

Vadim Inshakov in Go-go!
Владимир Столяров
Так то у os.File есть финализатор, который вызывает close
есть? зачем тогда мы close() вызываем? да и в примере финализатор никогда не сработает, даже если он есть
источник

ВС

Владимир Столяров... in Go-go!
Если открыть исходники os.Open, там можно будет увидеть runtime.SetFinalizer
источник

VI

Vadim Inshakov in Go-go!
Je
Здесь память GC тебе возвращает, но поскольку нет Close, ОС будет считать файл открытым, увеличивая счетчик открытых дескрипторов - этот лимит обычно устанавливается тоже. Смотри ulimit
подозрительно, что я не дистиг лимита всё ещё (программа работает)
источник

VI

Vadim Inshakov in Go-go!
источник

RS

Roman Sharkov in Go-go!
никто случайно не подскажет, насколько сложно на Go будет написать для Windows 10 WebSocket сервак который управляет курсором мышки? 🤔
источник

VI

Vadim Inshakov in Go-go!
смотреть на exe/test
источник

а

а кто это in Go-go!
Roman Sharkov
никто случайно не подскажет, насколько сложно на Go будет написать для Windows 10 WebSocket сервак который управляет курсором мышки? 🤔
ты про то что дергать через Win API курсор?
источник

J

Je in Go-go!
мне кажется это временный эффект, прочекай дескрипторы, память ядра наверняка дескрипторами в это время наполняется, пока не треснет
источник

ВС

Владимир Столяров... in Go-go!
Roman Sharkov
никто случайно не подскажет, насколько сложно на Go будет написать для Windows 10 WebSocket сервак который управляет курсором мышки? 🤔
В winapi можно поставить курсор по абсолютным координатам, но надо ещё знать собственно разрешение экрана
источник

RS

Roman Sharkov in Go-go!
а кто это
ты про то что дергать через Win API курсор?
да, хочу из web-приложения на андройде на винде курсором управлять
источник

C

Calculon in Go-go!
Roman Sharkov
никто случайно не подскажет, насколько сложно на Go будет написать для Windows 10 WebSocket сервак который управляет курсором мышки? 🤔
не сложно
источник

C

Calculon in Go-go!
syscall mouse move x y
источник