lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Fri, Mar 14, 2014 at 6:08 AM, Coroutines <coroutines@gmail.com> wrote:
> On Fri, Mar 14, 2014 at 6:06 AM, Coroutines <coroutines@gmail.com> wrote:
>> On Fri, Mar 14, 2014 at 4:53 AM, Luiz Henrique de Figueiredo
>> <lhf@tecgraf.puc-rio.br> wrote:
>>>> a = {__gc = function() print'exit' end}
>>>> setmetatable(a,a)
>>>> os.exit()
>>>>
>>>> -> nothing to print.
>>>> But if i exit with combination <Ctrl+d>  all Ok.
>>>
>>> os.exit() terminates the process there and then.
>>>
>>> <Ctrl+d> terminates the session cleanly, calling lua_close,
>>> which then calls the GC methods.
>>>
>>
>> see I would have expected the opposite... because in C you have exit()
>> and at_exit(), I thought lua_close() would be called at_exit() by the
>> interpreter.  Doing ctrl + d would be more "instantaneous"?  Kinda
>> wish both had called the __gc eitherway ~
>
> er, I mean atexit(), not at_exit().  I wish the standard lua
> interpreter (embedding example?) registered a function to lua_close()
> the main state with atexit()

hmm, I didn't see that os.exit() had changed so much between 5.1 and
5.2 -- I knew about os.exit(boolean) but I didn't know about the 2nd
parameter to close the state too