有没有办法获得对象的所有非零参数/属性?我发现了这个:getmetadata(self.xxxx)我正在寻找类似的东西:getalldata(self).
我目前正在开展一个涉及lua的项目.不幸的是,没有完整的参考,我必须使用预编译的东西.
我希望你能理解我想说的话.
我试图在表中存储不同的函数,但不知何故它不会像我想象的那样工作.这是我的'代码'
fn_table = { aFun1=print, aFun2=self:getSpeedLevel, aFun3=.... }
Run Code Online (Sandbox Code Playgroud)
现在的问题是我可以使用内置函数来完成这个print,assert等等,但它不能与我得到的其他函数一起使用.
我收到错误:"...函数参数预计在'}'附近
是否也可以存储这些功能?
编辑:
我正在尝试编写一个简单的冒烟测试,其中测试了所有选项和合理的参数.
我使用popen()来执行应该测试的程序.使用这种方法不起作用,因为如果进程因信号而死(SIGINT,SIGSEGV ...),来自popen()的管道不会告诉我发生了什么.
编写信号处理程序并没有帮助,因为popen创建了一个接收信号而不是我的冒烟的新过程.
由于答案,我使用pipe(),fork()和execv()来创建我自己的popen() - 版本.
当程序现在段错误时,管道是无用的(读取导致奇怪的行为 - >阻止该过程,直到我向父母发送sigkill!)
为了避免这种情况,我尝试了不同的东西,我的解决方案如下(这很简单,但我需要一段时间来弄明白).所以这是我的示例代码:
static int child_dead = 0;
void sigaction_sigchld(int signal) { /* Child died */
child_dead = 1;
}
int main(int argc, char *argv[], char *env[])
{
char *crashing_program = "/program_path/and_name";
int ret;
int byte;
pid = fork();
if(pid == 0) /* Child */
{
execve(crashing_program, argv, env);
/* if execve returns that it mus have failed! */
fprintf(stderr, "Exec failed\n");
_exit(-1);
} else /* Parent */
{
if(!child_dead)
{ …Run Code Online (Sandbox Code Playgroud)