如何结束Node VM2当前正在运行的任何代码

时间:2016-12-11 00:04:23

标签: node.js node-vm2

我正在使用vm2在Node中运行一些沙盒代码。

正在运行的代码将主要是异步的。它是不受信任的代码,不能依赖于以任何方式符合 - 因此我使用#include <stdio.h> #include <stdlib.h> #include <mpi.h> #define N 32 int A[N]; int main(int argc, char *argv[]) { int size; int rank; const int ROOT = 0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); int count = N / (size - 1); int *localArray = (int *) malloc(count * sizeof(int)); if (rank == ROOT) { for (int i = 0; i < N; i++) { A[i] = rand() % 10; } for (int dest = 1; dest < size; ++dest) { MPI_Send(&A[(dest - 1) * count], count, MPI_INT, dest, tag, MPI_COMM_WORLD); printf("P0 sent a %d elements to P%d.\n", count, dest); } for (int source = 1; source < size; source++) { MPI_Recv(localArray, count, MPI_INT, source, 2, MPI_COMM_WORLD, MPI_STATUS_IGNORE); //--------------------------------MERGE THE ALL RESULTS INTO A SORTED ARRAY------------------------------------- printf("Received results from task %d\n", source); } } else { MPI_Recv(localArray, count, MPI_INT, ROOT, tag, MPI_COMM_WORLD, MPI_STATUS_IGNORE); //---------------SORT THE localArray------------------- MPI_Send(localArray, count, MPI_INT, ROOT, tag, MPI_COMM_WORLD); } MPI_Finalize(); return 0; } 来运行它。

vm2是否有办法结束当前正在执行的任何代码?文档非常有限。例如,如果我有这个代码:

vm2

我有没有办法运行上述内容,并在将来某个时候暂停它,而控制代码不必知道var code = 'setInterval(function(){ console.log("tick"); }, 1000);' vm.run(code); 的内容,也不需要code提供任何具体功能?

我找不到code方法或类似方法。

1 个答案:

答案 0 :(得分:4)

不幸的是,没有办法中断VM中运行的代码的执行。 vm2库基于Node的VM模块,该模块不提供任何方法来中断在沙箱中运行的代码。至少在写这篇文章时不会。

您唯一可以限制的是任何同步执行的持续时间。

免责声明:我是作者vm2库。