Size: a a a

2020 August 03

ИИ

Иванов Иванов... in ErlangRus
Aleksey Kluchnikov
> file:list_dir_all("~/").
{error,enoent}
я и грю, эти команды не вызывают shell, а использует winapi/posix , а ~ заменяет shell
источник

EI

Evgeniy Isaev in ErlangRus
Aleksey Kluchnikov
оно скорее всего не знает что такое HOME
С HOME нормально на линуксе работает:
3> file:read_file_info(filename:join([os:getenv("HOME"), ".vimrc"])).
{ok,{file_info,2986,regular,read_write,
              {{2020,8,3},{9,57,30}},
              {{2020,7,31},{19,18,58}},
              {{2020,7,31},{19,18,58}},
              33204,1,2066,0,554363,1000,1000}}
источник

AK

Aleksey Kluchnikov in ErlangRus
так да
источник

EI

Evgeniy Isaev in ErlangRus
На винде не могу проверить, но наверное должно сработать как-то так:
file:read_file_info(filename:join([os:getenv("UserProfile"), "blablabla.txt"])).
источник

EI

Evgeniy Isaev in ErlangRus
Или
file:read_file_info(filename:join([os:getenv("HomeDrive"), os:getenv("HomePath"), "blablabla.txt"])).
источник

В

Вертолетчик... in ErlangRus
Sergey Prokhorov
os:getenv("HOME") можно наверное
Ну в моём случае так не прокатит, потому как напрямую передаётся путь к файлу
источник

В

Вертолетчик... in ErlangRus
Хотя, тогда есть вариант пропарсить эту тильду... это мысль
источник

ИИ

Иванов Иванов... in ErlangRus
Вертолетчик
Хотя, тогда есть вариант пропарсить эту тильду... это мысль
не очень идея. раз прилетает ~ значит могут прилетать и другие shell расширения
источник

В

Вертолетчик... in ErlangRus
Иванов Иванов
не очень идея. раз прилетает ~ значит могут прилетать и другие shell расширения
Ну это как бы фиг с ним, тут просто тесты прогнать надо. А некоторые тесты тупо не прогоняются, если файла нет
источник

В

Вертолетчик... in ErlangRus
Точнее, если не находит его
источник

ИИ

Иванов Иванов... in ErlangRus
Вертолетчик
Точнее, если не находит его
ну если так, то и вызови тогда через os: команду power shell , чтобы получить полный путь.
источник

ИИ

Иванов Иванов... in ErlangRus
(пускай работает железная лопата)
источник

В

Вертолетчик... in ErlangRus
А! Тут просто вот ещё какой прикол... шелл шеллу рознь. Например в баше:
export CACHE_DIR=~/.cache - окей, и преобразуется в полный путь
а в powershell:
$env:CACHE_DIR=~/.cache - ошибка, и поэтому приходится в кавычках прописывать, что собссно не имеет смысла
источник

ИИ

Иванов Иванов... in ErlangRus
Вертолетчик
А! Тут просто вот ещё какой прикол... шелл шеллу рознь. Например в баше:
export CACHE_DIR=~/.cache - окей, и преобразуется в полный путь
а в powershell:
$env:CACHE_DIR=~/.cache - ошибка, и поэтому приходится в кавычках прописывать, что собссно не имеет смысла
ну да, разумеется.  а тебе надо чтобы и там и там работало?
источник

В

Вертолетчик... in ErlangRus
Иванов Иванов
ну да, разумеется.  а тебе надо чтобы и там и там работало?
Ну вообще да ))). Ну я тут уже в принципе рюхнул это дело:
$env:CACHE_DIR = Resolve-Path ~/.cache
источник

SP

Sergey Prokhorov in ErlangRus
а filename:basedir/2 не подойдёт? http://erlang.org/doc/man/filename.html#basedir-2
источник

SP

Sergey Prokhorov in ErlangRus
раз я смотрю там уже .cache пошли
источник

В

Вертолетчик... in ErlangRus
Sergey Prokhorov
а filename:basedir/2 не подойдёт? http://erlang.org/doc/man/filename.html#basedir-2
Не, в моём случае произвольный путь может быть. Про кэш это я так ляпнул... для форсу бандитского )))
источник

В

Вертолетчик... in ErlangRus
А вот ещё такой вопрос. Вот после такого:

Pid = erlang:spawn(fun() -> receive after 100 -> ok end end), timer:sleep(100), erlang:is_process_alive(Pid).
говорит true !!!

А вот после такого (спать 101 мс):
Pid = erlang:spawn(fun() -> receive after 100 -> ok end end), timer:sleep(101), erlang:is_process_alive(Pid).
говорит false !!!
Интересно, сколько времени надо процессу, чтобы быть реально убитым после завершения основной функции?
источник

ИИ

Иванов Иванов... in ErlangRus
Вертолетчик
А вот ещё такой вопрос. Вот после такого:

Pid = erlang:spawn(fun() -> receive after 100 -> ok end end), timer:sleep(100), erlang:is_process_alive(Pid).
говорит true !!!

А вот после такого (спать 101 мс):
Pid = erlang:spawn(fun() -> receive after 100 -> ok end end), timer:sleep(101), erlang:is_process_alive(Pid).
говорит false !!!
Интересно, сколько времени надо процессу, чтобы быть реально убитым после завершения основной функции?
так а где у тебя гарантия, что ты получишь управление позже чем начнет работать receive
источник