Tôi phải sử dụng io.popen
trong Lua để chạy tệp thi hành có tham số dòng lệnh. Làm thế nào để chờ quá trình hoàn thành trong Lua để có thể ghi lại đầu ra mong muốn?io.popen - làm thế nào để chờ quá trình kết thúc ở Lua?
local command = "C:\Program Files\XYZ.exe /all"
hOutput = io.popen(command)
print(string.format(""%s", hOutput))
Giả sử thực thi là XYZ.exe cần được gọi với đối số dòng lệnh /all
.
Khi io.popen(command)
được thực hiện, quá trình sẽ trả lại một số chuỗi cần được in.
đoạn mã của tôi:
function capture(cmd, raw)
local f = assert(io.popen(cmd, 'r'))
-- wait(10000);
local s = assert(f:read('*a'))
Print(string.format("String: %s",s))
f:close()
if raw then return s end
s = string.gsub(s, '^%s+', '')
s = string.gsub(s, '%s+$', '')
s = string.gsub(s, '[\n\r]+', ' ')
return s
end
local command = capture("C:\Tester.exe /all")
sự giúp đỡ của bạn sẽ được đánh giá cao.
Tôi gặp một mã bằng cách nào đó nó không hoạt động đúng chức năng – Chet
chụp (cmd, thô) địa phương f = assert (io.popen (cmd, 'r')) - chờ (10000); local s = assert (f: read ('* a')) In (string.format ("String:% s", s)) f: close() nếu raw sau đó trả về s end s = string .gsub (s, '^% s +', '') s = string.gsub (s, '% s + $', '') s = string.gsub (s, '[\ n \ r] +' , '') trả lại s kết thúc lệnh cục bộ = capture ("C: \ Tester.exe/all") – Chet