Como remover funções específicas da biblioteca os sem editar os cabeçalhos Lua ou os scripts

Fiz minha lição de casa e estudei outras respostas sobre esse assunto, mas nenhuma abordou minha questão específica.

Eu quero remover a biblioteca do io completamente e o os apenas parcialmente (digamos que eu queira manter os.clock () e outros)

Como posso conseguir isso somente a partir da API C?

Devido à natureza do projeto, não tenho permissão para modificar os cabeçalhos Lua e os scripts que serão enviados para mim. Estes não estão sob meu controle. A única coisa que posso modificar é o intérprete.

fazendo algo assim:

<code>lua_pushnil(state_pointer);
lua_setglobal(state_pointer, "os.execute");
</code>

não vai ajudar muito porque no script o usuário pode chamar os = require ('os') e recuperar todas as funções

Eu não tenho permissão para desabilitar a função require, então isso torna as coisas mais difíceis.

Alguma ideia?

PS: Mais uma curiosidade: se eu fizer algo como

<code>luaopen_base(L);
luaopen_table(L);
luaopen_string(L);
luaopen_math(L);
luaopen_loadlib(L); (basically i'm loading every library by hand except os and io)
</code>

ao invés de

<code>luaL_openlibs(L); (this loads all the libraries)
</code>

would os = require ('os') ou io = require ('io') ainda funcionam?

@Nicol Bolas não sabe se estou fazendo algo errado, mas os = require ('os') & require ('io') simplesmente traz tudo de volta.

meu código:

<code>luaL_openlibs(LuaInstance);     /* load the libs        */ 
lua_pushnil(LuaInstance);
lua_setglobal(LuaInstance, "io");
lua_pushnil(LuaInstance);
lua_setglobal(LuaInstance, "os.execute");
lua_pushnil(LuaInstance);
lua_setglobal(LuaInstance, "os.rename");
lua_pushnil(LuaInstance);
lua_setglobal(LuaInstance, "os.remove");
lua_pushnil(LuaInstance);
lua_setglobal(LuaInstance, "os.exit");
</code>

No meu roteiro eu apenas faço um

<code>os = require('os')
io = require('io')
</code>

após este as funções e funções io todo o trabalho. os.exit ainda fecha meu aplicativo e o io.write funciona normalmente

questionAnswers(2)

yourAnswerToTheQuestion