excel()意外地返回-1

时间:2014-02-01 17:24:01

标签: c exec fork return-value

我正在使用execl()从分叉的孩子那里运行某个程序。这就是我所拥有的:

int setup(int* arg1, int* arg2) {
    int fd[2], ret, pid;

    // create the pipe
    ret = pipe(fd);
    if (ret == -1) {
        fprintf(stderr, "Pipe Failed");
        exit(-1);
    }

    pid = fork();
    if (pid < 0) {
        fprintf(stderr, "Fork Failed");
        exit(-1);
    } else if (pid == 0) {
        dup2(fd[0],0);
        close(fd[0]);
        close(fd[1]);
        int uhoh = execl("prog", "prog", arg1, arg2, NULL);
        fprintf(stderr, "%d %d\n", uhoh, getpid());
    } else {
        close(fd[0]);
        return fd[1];
    }
}

这里的目标是创建一个子项,将管道的读取端附加到它的STDIN,然后用prog程序替换它。东西没有用,所以我在STDERR上添加了fprintf以查看返回值是什么,它一直是-1

我当前的工作目录如下所示:

stuff/
    main.c
    main
    prog.c
    prog

这个execl()电话应该有效吗?如果-1出现问题,它会返回prog吗?

0 个答案:

没有答案