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

时间:2017-06-01 05:09:07

标签: c node.js function

我有一个要求,我想在C中遇到一个条件后启动我的nodejs脚本。 我正在使用系统("节点/path_to_file/sample.js") 这是执行nodejs脚本的正确方法还是其他任何方式?

1 个答案:

答案 0 :(得分:0)

您可以使用execve (man 2 execve)以及execvp (man 3 execvp)的所有系列来执行C程序中的程序和脚本。如果您使用这些电话,您的程序将在通话后被终止,为避免这种情况,您需要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()可能是一个难以理解的系统调用,但这是一个非常强大且重要的学习要求