Информация об изменениях

Сообщение Re[9]: В Windows теперь нужно писать ./my.exe от 30.06.2023 18:48

Изменено 30.06.2023 18:51 netch80

Re[9]: В Windows теперь нужно писать ./my.exe
Здравствуйте, Евгений Музыченко, Вы писали:

N>>С чего бы это? Зачем было бы нужно такое умолчание?


ЕМ>С того же и затем же, что по умолчанию файлы создаются без флага E, он всегда устанавливается явно.


Во-первых, что такое флаг E? Ты о какой ОС вообще говоришь? Если про Unix семейство (думаю, раз пошёл разговор в подветке), то там есть 3 флага: S_IXUSR,S_IXGRP, S_IXOTH (user, group, other соответственно). В стандартном выводе ls в формате вывода -rwxrwxrwx это все x соответственно.

Во-вторых, никакого такого умолчания нет, тебя обманули. На каждое создание файла 3-й аргумент open() и аналогичные аргументы всяких более современных openat() содержат полную маску, которая затем сбрасывается по текущей umask процесса (которая обычно, средствами init-процесса, установлена в 0o22, то есть S_IWGRP|S_IWOTH (заметь, это не флаги исполнения!)

Ты можешь вызвать open(path, O_CREAT|..., S_IRUSR|S_IWUSR|S_IXUSR), например, и он будет исполняемым с ходу, но только для владельца. Часто такие маски пишут идиомами, и, например, 0644 — стандартные права для неисполняемого, 0755 — для исполняемого.

Так что пересмотри свои знания и не пори чушь.

(PS: На самом деле, в некоторых ситуациях, как минимум, не вредно создавать вначале файл с минимальными правами и только после заливки всего содержимого ставить полный комплект. Так вот — сюрприз — обычные tar типа GNU реализации именно так и делают! Так что и тут проблемы нет.)
Re[9]: В Windows теперь нужно писать ./my.exe
Здравствуйте, Евгений Музыченко, Вы писали:

N>>С чего бы это? Зачем было бы нужно такое умолчание?


ЕМ>С того же и затем же, что по умолчанию файлы создаются без флага E, он всегда устанавливается явно.


Во-первых, что такое флаг E? Ты о какой ОС вообще говоришь? Если про Unix семейство (думаю, раз пошёл разговор в подветке), то там есть 3 флага: S_IXUSR,S_IXGRP, S_IXOTH (user, group, other соответственно). В стандартном выводе ls в формате вывода -rwxrwxrwx это все x соответственно.

Во-вторых, никакого такого умолчания нет, тебя обманули. На каждое создание файла 3-й аргумент open() и аналогичные аргументы всяких более современных openat() содержат полную маску, которая затем сбрасывается по текущей umask процесса (которая обычно, средствами init-процесса, установлена в 0o22, то есть S_IWGRP|S_IWOTH (заметь, это не флаги исполнения!) или почему-то в современных редхатоидах и дебианоидах в 002 (я исправляю у себя).

Ты можешь вызвать open(path, O_CREAT|..., S_IRUSR|S_IWUSR|S_IXUSR), например, и он будет исполняемым с ходу, но только для владельца. Часто такие маски пишут идиомами, и, например, 0644 — стандартные права для неисполняемого, 0755 — для исполняемого.

Так что пересмотри свои знания и не пори чушь.

(PS: На самом деле, в некоторых ситуациях, как минимум, не вредно создавать вначале файл с минимальными правами и только после заливки всего содержимого ставить полный комплект. Так вот — сюрприз — обычные tar типа GNU реализации именно так и делают! Так что и тут проблемы нет.)