从流程创建流程需要多长时间

时间:2015-07-26 09:32:04

标签: linux exec fork

我正在尝试从现有流程创建新流程。

就像parentMain进程创建了childMain进程一样。

我的目标是: 1)两个过程都将继续运行(意味着没有人应该等待另一个完成) 2)创建者 - parentMain进程应该向创建的进程发送消息 - childMain进程。

我不知道新的childMain进程何时准备就绪。我不能使用等待功能,因为我知道等待直到 孩子的过程应该结束,但我的目标是它会继续运行。

经过一番谷歌搜索后,我正在使用fork& exec家族的功能如下:

void parentMain::CreateAndSend()
{
    createNewProcess();
    sendMessage();
}

void parentMain::createNewProcess()
{
    char* param1[10] = "param1";
    // Create new process.
    cpid = fork();

    if (cpid >= 0) // fork() succeeded.
    {
        if (cpid == 0) // 0 for child process.
        {
            execl("/home/kon/childMain", "/home/kon/childMain", param1, (char*)0);
        }
        else /* parent process */
        {
            printf("Parent process, parent PID=%d child PID=%d, getpid(), cpid);
        }
    }
    else // fork() failed.
    {
        printf("Failure");
    }
}

void parentMain::sendMessage()
{

    Y = 50; // milliseconds.
    nanosleep(Y);
    ?? isChildReady ??
    sendChildMessage();

}

现在,有时sendMessage()会失败! 如果我使用睡眠(X)它成功了。 (很快) 但我希望尽可能减少时间。 创建流程需要多长时间? 是否有任何功能说"孩子准备就绪"? 我该怎么办?

由于

0 个答案:

没有答案