C++ 使用fork()c++;

C++ 使用fork()c++;,c++,string,fork,shared-memory,C++,String,Fork,Shared Memory,我在共享内存中有一个字符串(fileContents),由9行组成: sprintf(shared_memory, fileContents.c_str()); 我想调用fork()来创建与行数相同的进程。这些过程将操纵每一行。但是,调用fork()时,我不知道从哪里开始。我看到的每个示例都只是返回父进程和子进程的进程ID,而没有显示进程如何或何时执行某些操作 任何指导都将不胜感激,谢谢 我看到的每个示例都只是返回父进程和子进程的进程ID 那是不对的 父进程将获取子进程的进程id,但子进程将知

我在共享内存中有一个字符串(
fileContents
),由9行组成:

sprintf(shared_memory, fileContents.c_str());
我想调用
fork()
来创建与行数相同的进程。这些过程将操纵每一行。但是,调用
fork()
时,我不知道从哪里开始。我看到的每个示例都只是返回父进程和子进程的进程ID,而没有显示进程如何或何时执行某些操作

任何指导都将不胜感激,谢谢

我看到的每个示例都只是返回父进程和子进程的进程ID

那是不对的

父进程将获取子进程的进程id,但子进程将知道它是子进程,因为
fork()
返回0

此代码将分叉9次,每个子级都执行特定的工作

for( int line = 1; line <= 9; ++line ) // *cough*
{
    if ( fork() == 0 )
    {
        // Child process.  Handle line, and exit()
    }
}

用于(int line=1;line您希望进程在分叉后继续运行相同的程序,还是启动不同的程序?在前一种情况下,只需在分叉后继续运行其余的程序,在后一种情况下,您希望调用
exec
在子进程中运行新的可执行文件process@JonathanWakely我不确定我能不能来完全理解你的问题,但在每一行被操作之后,我将打印出共享内存,程序将结束。谢谢你的回答,它帮助退出了一点。再问一个问题。我似乎挂断了子进程。它们是对象吗?你能解释一下它们是如何使用的吗。谢谢=)。你不“使用”进程,进程是运行程序的操作系统实体,它从
main()
开始,执行程序中的所有代码,直到退出。系统调用
fork()
创建一个当前进程的相同副本,该进程运行同一程序的同一行。在调用
fork()
之前,您有一个进程运行代码,在
fork()
之后,您有两个进程运行代码。在尝试使用
fork()执行任何操作之前,您需要确保了解这一点
,否则你会很困惑。@Nikkisixx2“什么是过程”是一个答案冗长的问题。