exec()不会抛出错误,但不会运行其他可执行文件。语法错误?

时间:2015-10-03 02:21:55

标签: c exec fork wait

我正在尝试使用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);     
    }

0 个答案:

没有答案