linux停多线程里面fork了一个进程,导致有个调用的函数被多调用了一次

linux下多线程里面fork了一个进程,导致有个调用的函数被多调用了一次
linux下多线程里面fork了一个进程,导致有个调用的函数被多调用了一次?
怎么解决?

------解决方案--------------------
fork 之后的代码会被执行两次, 父子各一次.
你不贴码子, 怎么看.

------解决方案--------------------
pid[0]是什么?fork返回的么?
fork调用一次,返回两次,一次是父进程里返回创建的子进程id,另一次是子进程返回0。看贴出的代码,不会调用两次execvp。除非你前面fork就调用了两次
------解决方案--------------------

char* args[100] = {
"ls","-l",NULL
};
int pid = fork();
if(pid == 0)
excevp("ls",args);

如果执行成功,就打印ls -l后的内容,只打印一次啊
------解决方案--------------------


int
main(void)
{
    pid_t   pid;

    if ((pid = fork()) < 0) {
        err_sys("fork error");
    } else if (pid == 0) {  /* specify pathname, specify environment */
        if (execle("/home/sar/bin/echoall", "echoall", "myarg1",
                "MY ARG2", (char *)0, env_init) < 0)
            err_sys("execle error");
    }

    if (waitpid(pid, NULL, 0) < 0)
        err_sys("wait error");

    if ((pid = fork()) < 0) {
        err_sys("fork error");
    } else if (pid == 0) {  /* specify filename, inherit environment */
        if (execlp("echoall", "echoall", "only 1 arg", (char *)0) < 0)
            err_sys("execlp error");
    }

    exit(0);
}