Linux fork()命令

Alw*_*oss -3 c linux ubuntu printf fork

我写了一个程序

#include <stdio.h>
#include <unistd.h>

int main()
{
    int returnVal = fork();
    printf("Return Value: %i\n", returnVal);
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

当我编译并运行时,我得到以下输出我只给出了一个printf语句然后为什么我看到2个打印.如果我删除了打印件,则不会打印任何内容.

alwin@alwin-desktop:~/Projects/Nix$ ./a.out 
Return Value: 5547
Return Value: 0
Run Code Online (Sandbox Code Playgroud)

Abh*_*eet 7

你需要通过man命令:-)

校验: pid_t fork(void);

fork()创建通过复制调用进程的新进程.新进程(称为子进程)与调用进程完全相同,称为父进程.

DETAILS ::首先,您执行了创建子进程的代码.现在你有两个进程执行同一段代码.所以两个打印语句,父进程的第一个和子进程的第二个.


sr0*_*853 6

printf执行程序中的语句twice,因为一旦fork成功,程序就由two processes(childparent进程)控制.这里的printf由子进程和父进程执行

为了避免这种行为,使用fork()在程序中进行三种不同的条件检查总是好的

int pid;
if((pid = fork()) == -1 )
{ //fork unsuccessful 
 }
else if ( pid > 0)
{ //This is parent
 }
else
{//This is child
 }
Run Code Online (Sandbox Code Playgroud)


md5*_*md5 5

fork创造一个新的过程.因此有两个进程执行下一个语句.父进程具有returnVal = 5547(子进程'PID)和子进程returnVal = 0.

fork()功能应创建一个新的过程.新进程(子进程)应该是调用进程(父进程)的精确副本