C语言执行javascript代码

原理: 应用SpiderMonkey的js引擎可以执行javascript代码.

1.添加头文件

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <smjs/jsapi.h>

2.添加主函数

int main(int argc, char **argv)
{
    JSRuntime *RunTime = NULL;
    JSContext *ConText = NULL;
    JSObject *Global = NULL;
    jsval rval;
    const char *Script;

    if(argc != 2)
    {
        printf("入参个数错误\n");
        return 0;
    }

    Script = argv[1];

    printf("script is \"%s\"\n", Script);

    if(!(RunTime = JS_NewRuntime(1024L * 1024L)) || !(ConText = JS_NewContext(RunTime, 8192)) || !(Global = JS_NewObject(ConText, NULL, NULL, NULL)))
    {
        return EXIT_FAILURE;
    }

    if(!JS_InitStandardClasses(ConText, Global))
    {
        return EXIT_FAILURE;
    }

    if(!JS_EvaluateScript(ConText, Global, Script, strlen(Script), "script", 1, &rval))
    {
        return EXIT_FAILURE;
    }

    printf("the script's result is %d\n", JSVAL_TO_INT(rval));

    JS_DestroyContext(ConText);
    JS_DestroyRuntime(RunTime);
    JS_ShutDown();

    return EXIT_SUCCESS;
}

3.编译代码

gcc -o examle examle.c -L$HOME/local/normal/lib -ljs

4.运行程序

./examle "var a=1; var b=2; a+b"

5.执行结果

script is "var a=1; var b=2; a+b"
the script's result is 3
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,801评论 1 45
  •   自从 2000 年以来,Web 开发方面的种种规范、条例正在高速发展。Web 开发过去曾是荒芜地带,里面东西还...
    霜天晓阅读 530评论 0 1
  • 早上老公送儿子去上课,我一个人反思,为什么没有了恐慌感,却还是没有向上的力量,吸引老公也是消极的对待?没有想...
    玲03阅读 255评论 0 5
  • 读客公司最近为这本书砸了不少钱,三大卖书网站全都要了大推荐位重推,出版没几天,猖狂地占据了新书榜第一的位置,耀武扬...
    谪狂阅读 506评论 0 0