我有一个要求,我想在C中遇到一个条件后启动我的nodejs脚本。 我正在使用系统("节点/path_to_file/sample.js") 这是执行nodejs脚本的正确方法还是其他任何方式?
答案 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()
可能是一个难以理解的系统调用,但这是一个非常强大且重要的学习要求