Latest post of the previous page:
как у io.popen задать текущую директорию для запускаемого процесса?John Doe wrote:В таком случае в чём преимущество обсуждаемой тут реализации Execute перед стандартной io.popen?
Latest post of the previous page:
как у io.popen задать текущую директорию для запускаемого процесса?John Doe wrote:В таком случае в чём преимущество обсуждаемой тут реализации Execute перед стандартной io.popen?
Предварительно вызвать SetCurrentDirectory (через ffi).zg wrote:как у io.popen задать текущую директорию для запускаемого процесса?John Doe wrote:В таком случае в чём преимущество обсуждаемой тут реализации Execute перед стандартной io.popen?
а текущий путь сетевой и в реестре нет DisableUNCCheck.John Doe wrote:Предварительно вызвать SetCurrentDirectory (через ffi).
Или cmd /c cd ... &
Code: Select all
local output = Execute("cmd /cdir")
if output then
for line in output do far.Show(line)
end
Почему-то не доходит:zg wrote:да.tstr wrote:При запуске через Execute "доходит" ли до процесса CtrlC/CtrlBreak ?
Execute("cmd /cdir /s","c:\\",function()end)
у меня всё ок.John Doe wrote:Почему-то не доходит:Execute("cmd /cdir /s","c:\\",function()end)
C:\APPs\Far3\far.exe /p%FARHOME%\Plugins\LuaMacro /m
.lua:loadfile"execute.lua"()("cmd /cdir /s","c:\\",function()end)
.Модуль execute не является причиной зависания. Если запуститьJohn Doe wrote:фар надолго зависает (не ждал до конца), CtrlBreak/CtrlC не действуют.
lflua -e"(require 'execute')('cmd /cdir /s','c:\\',function() end)"
,local iRet=ffi.new("int[1]")
if not C.GetExitCodeProcess(info.hProcess, iRet) then
iRet[0] = -1
end
return iRet[0]
Это не будет работать, если предварительно не определить прототип.
Code: Select all
ffi.cdef[[//https://msdn.microsoft.com/library/ms683189
BOOL WINAPI GetExitCodeProcess(
HANDLE hProcess,
LPDWORD lpExitCode
);]]
Сомневаюсь что это работает, ведь BOOL это int.
Я не определял... Может, в каком-то другом макросе определяется?
Очевидно.buniak_a_h wrote: ↑Fri 13 Oct, 2017 07:14Я не определял... Может, в каком-то другом макросе определяется?
В вашем случае всё работает (и я подозреваю что в большинстве других случаев тоже будет), но если код возврата важен, то надо всё-таки следовать документации.
Если будете выкладывать, то не в этой теме.
Разумеется он работает, я его использую. Только строка c WaitForSingleObject у меня закомментирована. Насколько я помню, я так и не разобрался тогда, нужна ли эта проверка для консольных программ или нет.