0

我需要为应该能够执行 shell 命令的嵌入式设备构建一个 javascript 引擎(duktape 或 jerryscript)。如何做到这一点?

4

1 回答 1

3

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

#include “duktape.h”

int main() {
    /* 创建堆 */
    duk_context* heap = duk_create_heap(NULL,NULL,NULL,NULL,
                                        无效的); /* 最好在这里设置一个错误回调 */

    /* 将原生函数压栈 */
    duk_push_c_function(ctx, /* 堆上下文 */
                        &native_js_shell, /* 本机函数指针 */
                        1); /* 接受的参数 */

    /* 使这个 javascript 函数成为全局对象的属性 */
    duk_put_global_string(ctx, /* 堆上下文*/
                          “壳”); /* js 中的函数名 */

    返回0;
}

/* 你的原生 C 函数 */
duk_ret_t native_js_shell(duk_context* ctx) {
    /* 从 javascript 中获取参数 */
    const char* cmd = duk_safe_to_string(ctx, /* 堆上下文 */
                                         -1); /* 堆栈位置 */

    /* 运行 shell 命令等 */
    /* ... */
}

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

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

于 2017-05-14T23:29:07.950 回答