我正在尝试使用fork()和exec()来运行另一个驻留在同一个directery中的程序。编译器没有抱怨,但我试图使用execl()调用的程序没有运行。有小费吗?谢谢!
pid = fork();
if (pid == -1) {
fprintf (stderr, "Error\n");
exit(1);
}
else if (pid > 0) {
wait(&status);
}
else {
execl("./expo.c", "./expo", x, n, (char*) NULL);
_exit(EXIT_FAILURE);
}
我也尝试了几个不同版本的exec(),但没有一个版本有效。
编辑: 我已经改为execl(“expo”,“expo”,& x,& n,(char *)NULL);虽然我仍然不确定为什么这个工作基于手册页。手册页说第一个参数应该是路径,而不仅仅是可执行文件。另外,如果我需要在终端中运行该可执行文件,为什么我不需要./作为第二个参数?
我有一切正常,这是我改变了。不是将参数(x和n)转换为int而是将它们传递给子节点,而是将它们作为字符传递给它们,然后在子进程中将它们作为int进行转换。
if(pid==-1){
fprintf (stderr, "Error\n");
exit(1);
}
else if(pid>0){
wait(&status);
}
else{
const char *x=argv[1];
const char *n=argv[2];
execl("expo","expo",x,n,(char*)NULL);
perror("execl() failure!\n");
exit(EXIT_FAILURE);
}