如何从duktape执行shell命令

时间:2017-05-11 10:49:59

标签: embedded iot duktape

我需要为嵌入式设备构建一个javascript引擎(duktape或jerryscript),它应该能够执行shell命令。怎么能实现呢?

1 个答案:

答案 0 :(得分:2)

使用C语言中的duktape,您可以轻松创建本机ECMAScript函数,并通过全局对象创建对它的引用:

#include "duktape.h"

int main() {
    /* create heap */
    duk_context* heap = duk_create_heap(NULL,NULL,NULL,NULL,
                                        NULL); /* preferably, set an error callback here */

    /* push the native function on the stack */
    duk_push_c_function(ctx, /* heap context */
                        &native_js_shell, /* native function pointer */
                        1); /* accepted arguments */

    /* make this javascript function a property of the global object */
    duk_put_global_string(ctx, /* heap context*/
                          "shell"); /* function name in js */

    return 0;
}

/* Your native C function */
duk_ret_t native_js_shell(duk_context* ctx) {
    /* obtain the argument from javascript */
    const char* cmd = duk_safe_to_string(ctx, /* heap context */
                                         -1); /* position on stack */

    /* run the shell command, etc. */
    /* ... */
}

duk_*函数的所有解释都可以在duktape API中找到,但也许这可以让您了解它的结构。

P.S。欢迎来到Stack Overflow!您的问题可能已被降级,因为它几乎需要有人为您编写所有代码。一般来说,在将来,尝试自己进行研究,并在遇到问题时询问具体问题。 :)