小编Flo*_*ian的帖子

如何在lua中找出对象的所有属性?

有没有办法获得对象的所有非零参数/属性?我发现了这个:getmetadata(self.xxxx)我正在寻找类似的东西:getalldata(self).

我目前正在开展一个涉及lua的项目.不幸的是,没有完整的参考,我必须使用预编译的东西.

我希望你能理解我想说的话.

lua properties object

10
推荐指数
1
解决办法
2万
查看次数

Lua:功能表

我试图在表中存储不同的函数,但不知何故它不会像我想象的那样工作.这是我的'代码'

fn_table = { aFun1=print, aFun2=self:getSpeedLevel, aFun3=.... }
Run Code Online (Sandbox Code Playgroud)

现在的问题是我可以使用内置函数来完成这个print,assert等等,但它不能与我得到的其他函数一起使用.

我收到错误:"...函数参数预计在'}'附近

是否也可以存储这些功能?

lua function lua-table

3
推荐指数
1
解决办法
3171
查看次数

c:在exec()中捕获一个在子进程中运行的段错误

编辑:

我正在尝试编写一个简单的冒烟测试,其中测试了所有选项和合理的参数.

我使用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)

c popen segmentation-fault

2
推荐指数
1
解决办法
5621
查看次数

标签 统计

lua ×2

c ×1

function ×1

lua-table ×1

object ×1

popen ×1

properties ×1

segmentation-fault ×1