По идее функция должна менять значение umask в оболочке. Но у меня такое подозрение, что эта гадина меняет маску только для самой программы (для вызовов open() в программе). Мне же необходимо изменить маску в оболочке. Можно, конечно воспользоваться system("umask xxx");, но предполагается, что утилиты umask в наличии не имеется. Как быть?
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
По идее функция должна менять значение umask в оболочке. Но у меня такое подозрение, что эта гадина меняет маску только для самой программы (для вызовов open() в программе).
не знаю по какой такой идее она якобы должна менять umask оболочки, но ее поведение стандартно и описано в мануале. если функция работает как должна, а не как хочется - это не проблемы функции....
кстати, сделай which umask и помедитируй над результатом....
так и есть. А вот как изменить для оболочки т.е. для родительского процесса - это интересный вопрос, надо посмотреть как утилита umask реализована, сегодня вечером будет время посмотрю. Да и тебе советую.
(Sash_xp @ Четверг, 19 Мая 2005, 4:41) писал(а):А вот как изменить для оболочки т.е. для родительского процесса - это интересный вопрос, надо посмотреть как утилита umask реализована
Никак. Процесс не может воздействовать на среду родительского. Поэтому umask не утилита, а встроенная функция шелла.
Подскажите в чем может быть проблема: при создании файла права выставляются каждый раз ПО-РАЗНОМУ, хотя umask задана 022. Так происходит и в shell (например touch file) и в perl скрипте?