从 C 函数调用/执行 node.js 脚本

标签 c node.js function

我有一个要求,我想在 C 中满足条件后启动我的 Nodejs 脚本。 我正在使用系统(“Node/path_to_file/sample.js”) 这是执行nodejs脚本的正确方法还是任何其他方法?

最佳答案

您可以使用 execve (man 2 execve) 以及所有 execvp 系列从 C 程序执行程序和脚本 (man 3 execvp) 。如果您使用这些调用,您的程序将在调用后被终止,为避免这种情况,您需要 fork() (man 2 fork)

这是它如何工作的一个小示例(它将在您的/目录上启动 ls -l):

 int main(int ac, char **av, char **env)
 {
   pid_t pid;
   char *arg[3];

   arg[0] = "/bin/ls";
   arg[1] = "-l";
   arg[2] = "/";

   pid = fork(); //Here start the new process;
   if (pid == 0)
   {
     //You are in the child;
     if (execve(arg[0], arg, env) == -1)
      exit(EXIT_FAILURE);
     //You need to exit to kill your child process
     exit(EXIT_SUCCESS);
   }
   else
   {
     //You are in your main process
     //Do not forget to waitpid (man 2 waitpid) if you don't want to have any zombies)
   }
 }

fork() 可能是一个难以理解的系统调用,但它是一个非常强大且重要的学习调用

关于从 C 函数调用/执行 node.js 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44298957/

相关文章:

c - 在C中定义一个函数以从用户处获取二维矩阵的元素

node.js - 如何使用 require ('request' 发送多个 post 参数);

javascript - 在 JavaScript 中每次调用函数时单独保存该函数的结果

c - 结构中函数中的指针不起作用

c - 如何找到分隔数组中元素的常量值

c - scanf 中的右对齐宽度修饰符?

javascript - 如何在运行 karma 时修复 "There is no server listening on port 9876"错误?

node.js - (libuv)kqueue(): Too many open files in system when trying to write a file in Node Js

c++ - 在函数中返回数组

c - FFmpeg:使用自定义上下文打开视频时未指定像素格式