c/c++开发分享c – fork()代码

void main () { if ( fork () ) { printf ( "PID1 %dn", getpid () ); } else { printf ( "PID2 %dn", getpid () ); } } 

这段代码有什么作用? 我知道它与进程ID有关,但不应该将某些东西返回到条件中以确定它是否是子进程/父进程?

    通常它是:

     pid_t pid = fork(); if(pid == 0) { //child } else if(pid > 0) { //parent } else { //error } 

    手册页说:

     返回值    成功完成后,fork()将返回0给孩子     进程并将子进程的进程ID返回给     父进程。 两个进程都将继续执行      fork()函数。     否则,-1将返回到父进程,没有子进程     应创建,并设置errno以指示错误。 

    上面的代码在执行fork调用时会创建一个新进程,这个进程将是原始进程的几乎完全相同的副本。 这两个过程将继续在返回表格中继续执行,叉号会引出一个问题“我怎么知道我是新流程还是旧流程?” 因为它们几乎相同。 为此,fork设计器使fork调用在每个进程中返回不同的东西,在新进程(子进程)中,fork调用返回0并且原始进程(父进程)fork返回新进程的ID,以便父进程可以与之互动。

    所以在代码中,fork调用创建了一个子进程,两个进程都是seforatly执行if语句。 在父级中,返回值不为零,因此父级执行if语句。 在子节点中,返回值为0,因此它执行else语句。 希望这可以帮助 :-)

    fork()的返回值指示进程是父进程还是子进程。 因此,子节点将始终打印“PID2 0”,因为如果fork()返回0,则运行if语句的第二部分。

      以上就是c/c++开发分享c – fork()代码相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545326.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注