Установите umask перед запуском процесса с помощью JAVA [duplicate]

Правильные регулярные выражения не могли бы этого сделать, поскольку вы покинули бы территорию обычных языков для приземления на территориях свободного пространства контекста.

Тем не менее, пакеты «регулярного выражения», которые предлагают многие языки,

Например, регулярные выражения Lua имеют распознаватель «%b()», который будет соответствовать сбалансированной круглой скобке. В вашем случае вы будете использовать «%b{}»

. Еще один сложный инструмент, подобный sed, - gema , где вы очень легко сопоставляете сбалансированные фигурные скобки с помощью {#}.

Итак, в зависимости от инструментов, которые у вас есть, ваше «регулярное выражение» (в более широком смысле) может соответствовать вложенным скобкам.

12
задан Reddy 3 October 2012 в 07:41
поделиться

3 ответа

Другой подход заключается в использовании сторонней библиотеки Java, которая предоставляет системные вызовы POSIX; например,

Проблема с этим подходом заключается в том, что он по своей сути не переносимый (не будет работать на платформе, не совместимой с POSIX), и требуется родная библиотека, специфичная для платформы ... и все, что влечет за собой.

0
ответ дан Stephen C 21 August 2018 в 09:04
поделиться

java.nio.file.attribute.PosixFileAttributes в Java SE 7.

1
ответ дан Tom Hawtin - tackline 21 August 2018 в 09:04
поделиться
  • 1
    Я не нашел там каких-либо функций для установки umask специально, только для разрешений файлов. – Nakedible 19 April 2012 в 14:49
  • 2
    @Niberible Да. – Tom Hawtin - tackline 19 April 2012 в 15:14

Вы не можете играть с umask напрямую, так как Java является абстракцией, а umask - специфичной для POSIX. Но у вас есть следующий API:

File f;
f.setExecutable(true);
f.setReadable(false);
f.setWritable(true);

Доступно еще несколько API, проверить документы .

Если вы должны имеют прямой доступ к umask, либо выполняйте его через JNI, и chmod() syscall, либо создайте новый процесс с помощью exec("chmod").

12
ответ дан Yuval Adam 21 August 2018 в 09:04
поделиться
  • 1
    Хм интересно, спасибо. Думаю, я могу использовать JNI для вызова umask (2)? – eeee 4 July 2010 в 17:58
  • 2
    @eeee уверен, но вам придется развернуть свой JNI-модуль на всех платформах, которые вы хотите поддерживать, поскольку это почти зависит от платформы определения. – extraneon 4 July 2010 в 18:04
  • 3
    @extraneon да, конечно. Честно говоря, я очень удивлен, что никто не создал модуль для Java, демонстрирующий все интерфейсы posix. Я имею в виду, что это не может быть прав - верно? Как люди выполняют системные действия в Java без такого рода вещей? – eeee 5 July 2010 в 00:21
  • 4
    @eeee Новые API для этого идут в Java 7 (который еще не вышел), в пакете java.nio.file. – Jesper 5 July 2010 в 08:03
  • 5
    если быть точным: в пакете java.nio.file.attribute. – Jesper 5 July 2010 в 08:35
Другие вопросы по тегам:

Похожие вопросы: