У меня есть программа Lua любовь:программа Lua-Love не запорных устройств, как я ожидаю его
конф-nogui.lua (вызывается в conf.lua, чтобы не отображать GUI):
function love.conf(t)
print("Switch GUI window off")
t.window = nil
end
main.lua:
-- UDP Server
local socket = require("socket")
require("utils")
require("globals")
-- Module Scoped Variables (or as I like to call them local-globals)
local udp
-- Startup
function love.load()
print("load")
udp = socket.udp()
udp:setsockname("*", SERVER_PORT)
udp:settimeout(0)
print("load done")
end
-- Scheduler
function love.update()
-- Check for Rx packets
local rxDataPacket, ip, port = udp:receivefrom()
if rxDataPacket then
-- print the packet as hex
printStringAsHex("Rx from " .. ip .. ":" .. port .. " ", rxDataPacket)
-- Turn string into an array for editing
local rxByteArray = stringToArray(rxDataPacket)
-- Edit values
rxByteArray[5] = 0x66
-- Turn back into string
local txDataPacket = arrayToString(rxByteArray)
-- Reply with the result
udp:sendto(txDataPacket, ip, port)
end
end
-- shutdown
function love.quit()
print("Closing connection...")
-- done with client, close the object
udp:close()
print("connection close done")
end
есть некоторые другие файлы, которые включены, но я не думаю, что нужны для этого вопроса.
Я запускаю программу в командной строке следующим образом: love . --console
Я в правильной директории, поэтому "." это текущий реж.
Эта небольшая программа работает точно так, как ожидалось, пока я ее не закрою. Он работает в командной строке Windows, поэтому я использую ctrl + c для завершения работы программы (у нее нет графического интерфейса - см. Файл conf).
Когда программа закрывает это то, что я вижу на в командной строке:
AL lib: (EE) alc_cleanup: 1 device not closed
Так что я не понимаю, почему мой function love.quit()
не называется. Я не вижу своего отладки . Это потому, что ctrl + C слишком сильно завершает программу? - есть ли другой способ прекратить программу?
хм .... проклятье, это то, чего я боялся. Я надеялся, что структура любви так или иначе справилась с этим. Вы знаете, как я могу справиться с SIGINT в lua? –
@code_fodder См. Обновленный ответ. –
ОК, спасибо - я понял, что с вашего первого поста, что я хочу знать, как справиться с этим, или как закончить программу «правильно» - имея в виду, что у меня нет GUI ... Я пробовал читать stdin, но это, кажется, блокирующий вызов, и я не хочу, чтобы моя программа блокировалась. –