Execlp不返回数字

时间:2016-03-13 19:37:26

标签: c

我有2个程序,我需要secound程序的值才能正确地继续我的第一个程序。我使用execlp调用一个secound程序并在ret中保存kill的数量,但是不能正确返回数字。 有人可以帮忙吗?

首次申请;

pid_t pid;
int ret=0;
pid = fork();
if(pid == 0){

    ret = execlp("/media/partilha/scomp1516t2dag02/modulo1/ex20/batota", "batota", (char*) NULL);
    if(ret == -1){
        printf("Erro da aplicação!");
        exit(0);
    }
}
wait(&estado);

第二次申请

int main(void){
    int ret;

    srand(time(NULL));
    ret = (rand() % 5) + 1;
    exit(ret);
}

1 个答案:

答案 0 :(得分:1)

execlp系统调用未返回 除非有错误。它会用新的程序替换你当前的程序(你的代码在那里停止,替换为新程序)。

来自execlp()的手册页:

  

“exec()系列函数用新的过程映像”

替换当前过程映像

也许您应该了解fork()如何运作,它可以帮助您。 wait()系统调用暂停执行调用进程,直到其子进程终止。除此之外,你的过程没有孩子;使用fork()制作一个。