Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Айлурофил
 Аватар для Massaraksh7
509 / 441 / 111
Регистрация: 27.05.2017
Сообщений: 2,629
Записей в блоге: 5

Странное поведение FileCreate под Linux

23.02.2025, 02:39. Показов 1645. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот такой код создаёт под Windows беспроблемный файл, который, по крайней мере, читается.
Pascal
1
2
3
4
var h:THandle;
...
h:=FileCreate(GetTempDir()+'/aaa.txt',fmShareExclusive,fmOpenRead or fmOpenWrite);
FileClose(h);
Под AstraLinux же при создании файла у него снимаются атрибуты чтения и записи, и он не читается (ошибка 13)
Пробовал так:
Pascal
1
h:=FileCreate(GetTempDir()+'/aaa.txt',fmShareDenyNone,fmOpenRead or fmOpenWrite);
Pascal
1
h:=FileCreate(GetTempDir()+'/aaa.txt',fmOpenRead or fmOpenWrite);
- то же самое.
Единственный случай, когда создаётся "нормальный" файл, который читается - это:
Pascal
1
h:=FileCreate(GetTempDir()+'/aaa.txt');
Кто знает Linux - что за нюансы?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.02.2025, 02:39
Ответы с готовыми решениями:

Странное поведение StringGrid'a
Всем доброго времени суток... Столкнулся с такой проблемой: В программе сравниваю ячейки в стринггриде (вначале по строкам) и нахожу...

Цикл for. Странное поведение счетчика
Приветствую всех. Перейду сразу к делу. // Получаем префикс времени function GetTimePrefix(N: Integer): String; ...

Странное поведение IdPOP3 (или возможно не он)
Есть достаточно массивный код, но вот его часть, самая важная, я вообще не понимаю почему и что происходит, какое-то странное поведение у...

4
0 / 0 / 0
Регистрация: 21.08.2021
Сообщений: 16
23.02.2025, 05:11
А попробуйте работать с файлами через СТАРЫЕ ПАСКАЛЕВСКИЕ методы через
Pascal
1
2
var
  tmp : File;
Там есть типизированные и нетипизированные файлы, а также текстовые.
Сам подход встроен в Паскаль и работает под любыми ОС, которые поддерживает Free Pascal.
0
Айлурофил
 Аватар для Massaraksh7
509 / 441 / 111
Регистрация: 27.05.2017
Сообщений: 2,629
Записей в блоге: 5
23.02.2025, 06:37  [ТС]
Цитата Сообщение от seyatel-sdg Посмотреть сообщение
А попробуйте работать с файлами через СТАРЫЕ ПАСКАЛЕВСКИЕ методы через
А я там не вижу возможность задавать монопольный/немонопольный доступ.
0
352 / 315 / 83
Регистрация: 17.04.2022
Сообщений: 1,028
Записей в блоге: 8
23.02.2025, 07:11
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Кто знает Linux - что за нюансы?
Копайте в сторону flock
Посмотрите, например, golang-реализацию, https://github.com/danjacques/... k_linux.go
0
 Аватар для DoNVen
14 / 12 / 2
Регистрация: 30.10.2024
Сообщений: 68
23.02.2025, 07:59
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
А я там не вижу возможность задавать монопольный/немонопольный доступ.
Правами на файл в Linux заведуют Chmod и Chown. Chown назначает владельца файла (в вашем случае это пользователь от которого запущено приложение). Chmod задает права доступа к файлу.

Я бы сделал так

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses
  BaseUnix, Unix;
...
var
  UserUID : LongInt;
begin
  UserUID := FpGeteuid; {Если не знаете UID пользователя, то определяем его и затем используем в fpChown}
  {Аналогично для группы FpGetegid}
 
  FileCreate('/tmp/aaa.txt'); {Создаем файл}
 
  fpChown('/tmp/aaa.txt', 1000, 1000); {Задаем владельца файла (UID владельца и GID группы).
 
  Эту команду можно опустить, если пользователь, запустивший приложение должин быть владельцем файла}
 
  fpChmod ('/tmp/aaa.txt',&777); {CСозданному файлу назначаем права доступа. 777 это полный доступ.}
 
  fpexecl ('/tmp/aaa.txt',[]); {При необходимости делаем файл исполняемым}
end.
Права доступа Linux https://habr.com/ru/articles/469667/

FpChown https://docs.freepascal.org/do... chown.html
FpChmod https://www.freepascal.org/doc... chmod.html
FpExecL https://docs.freepascal.org/do... execl.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.02.2025, 07:59
Помогаю со студенческими работами здесь

Непредсказуемое поведение "рукописной" URLEncode из-за странной работы ORD
Полагаю, многие пытались написать эту замечательную функцию. Я ее тоже писал вот таким вот простым образом: function URLEncode(const S:...

Странное поведение Кепшенов
В таком коде лейбл отображается урезанным наполовину по высоте (нижняя часть отсутствует): lbl1:=TLabel.Create(Self); With lbl1 do...

[Android, XE5] Странное поведение медиаплеер на разных платформах
Пробуем написать мобильное FireMonkey-приложение медиаплеера на Delphi XE5 и запустить его на Андроиде. Можно взять штатный пример из...

Странное поведение TEdit
Наткнулся на проблему которую не знаю как решить(( Мне кажется, что это глюк в самом Lazarus. (хотя, вероятнее у меня в коде). Проблема...

Странное поведение DBGrid
Простая, казалось бы, обращаюсь к БД MS SQL, но в DBGrid вижу фигу. procedure TForm1.Button1Click(Sender: TObject); begin {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru