Size: a a a

2020 August 15

S

S in Go-go!
Марк Егоров
Та я вот тоже думаю, что скорее всего нет. То есть, при Open ОС создает дескриптор, вносит его в таблицы фс, а нам отдает по идее ссылку на него в a. То есть никакие манипуляции с а не приведут к появлению второго дескриптора.
Эээ. Семейство вызовов dup* создаёт копию...
источник

АП

Александр Попов... in Go-go!
S
Эээ. Семейство вызовов dup* создаёт копию...
только на винде его не того
источник

АП

Александр Попов... in Go-go!
да и вопрос был про сырой доступ до той таблицы - экономия сискола
источник

S

S in Go-go!
Александр Попов
только на винде его не того
И там все есть. Свое. DuplicateHandle
источник

АП

Александр Попов... in Go-go!
S
И там все есть. Свое. DuplicateHandle
а в гоу оберточки нету? :)
источник

М

Марк Егоров... in Go-go!
S
Эээ. Семейство вызовов dup* создаёт копию...
Я не могу его найти. internal/syscall/unix мне не дает заимпортить. Это core либа?

Я под линухом, да.
источник

н

немедленно in Go-go!
ну internal
источник

н

немедленно in Go-go!
смотреть можно юзать нельзя
источник

н

немедленно in Go-go!
если хочешь почувствовать боль, то скопипасти и правь сам
источник

S

S in Go-go!
Александр Попов
а в гоу оберточки нету? :)
источник

АП

Александр Попов... in Go-go!
p, _ := syscall.GetCurrentProcess()
if err := syscall.DuplicateHandle(p, syscall.Handle(r.Fd()), p, &rHandle, 0, true, syscall.DUPLICATE_SAME_ACCESS); err != nil {
 return err
}
источник

АП

Александр Попов... in Go-go!
оно не оно хз
источник

М

Марк Егоров... in Go-go!
Марк Егоров
Я не могу его найти. internal/syscall/unix мне не дает заимпортить. Это core либа?

Я под линухом, да.
Ага, это syscall либа
источник

АП

Александр Попов... in Go-go!
пакет syscall
источник

S

S in Go-go!
Марк Егоров
Я не могу его найти. internal/syscall/unix мне не дает заимпортить. Это core либа?

Я под линухом, да.
источник

М

Марк Егоров... in Go-go!
Тут в аргументах int, а a.Fd возвращает тип uintptr.
источник

М

Марк Егоров... in Go-go!
Александр Попов
p, _ := syscall.GetCurrentProcess()
if err := syscall.DuplicateHandle(p, syscall.Handle(r.Fd()), p, &rHandle, 0, true, syscall.DUPLICATE_SAME_ACCESS); err != nil {
 return err
}
А такого в описании либы я вообще не нашел
источник

AS

Andrey S in Go-go!
или fcntl(F_DUPFD)
источник

S

S in Go-go!
Марк Егоров
Тут в аргументах int, а a.Fd возвращает тип uintptr.
Надо скастовать в int. Это просто номер дескриптора.
источник

АП

Александр Попов... in Go-go!
интересно что это практически даст
источник