fork 创建子进程,特点: 调用一次,返回两次。
#include<stdio.h>
int main(char** args) {
int cpid = fork();
if(cpid == 0) {
//in the child process
printf("I am child process, PID= %d, cpid = %d \n",getpid(),cpid);
}
else if(cpid > 0) {
//in the parent process
printf("I am parent process, PID= %d, cpid = %d \n",getpid(),cpid);
}
else {
//unable to create child process
perror("unable to create child");
}
}
/*
int r = fork()
如果返回0,则表示进入子进程代码逻辑;
如果返回正数,该正数等于子进程的进程号,并执行父进程的后继逻辑;
如果返回负数,则表示子进程创建失败,数值表示失败的原因。
调用一次,返回两次,至于先返回子进程,还是返回父进程是不可预知的。
*/
编译并运行
bash-3.00$ gcc -o forkdemo.o forkdemo.c
bash-3.00$ forkdemo.o
I am parent process, PID= 1667082, cpid = 839764
I am child process, PID= 839764, cpid = 0
bash-3.00$ ls
forkdemo.c forkdemo.o lib.c lib.o main.c main.o myHello tags
bash-3.00$
分享到:
相关推荐
在文件名列表中提到的"linux系统fork创建子进程"可能包含了一系列的源代码文件和对应的解释文档,通过这些文件,你可以逐步学习如何编写和调试使用`fork()`的程序,以及观察不同进程间的交互。这些实验可能涉及创建...
fork 函数与 vfork 函数的区别在于:vfork 函数创建的子进程会在父进程的地址空间中执行,而不是在自己的地址空间中执行。这意味着,vfork 函数创建的子进程不能修改父进程的地址空间。 在使用 fork 函数时,为什么...
fork 创建多个子进程是指通过 fork 系统调用创建多个子进程,每个子进程可以执行不同的任务。下面我们将讨论三种常见的 fork 创建多个子进程的方法。 第一种方法:同时创建多个子进程 该方法通过在主进程中使用 ...
2. **Exec()函数家族**:在使用fork创建子进程后,往往需要使用exec函数替换子进程的内存映像,加载新的程序执行。常见的有execl、execlp、execle、execv、execvp和execve等,它们用于执行指定的程序并替换当前进程...
该函数创建子进程具体fork的过程: (1)调用该函数即创建一个子进程,创建成功父进程返回子进程的pid,子进程返回0; (2)创建子进程实际上对父进程的一个拷贝,共享代码空间,拷贝父进程的数据,也就是说父进程...
如果子进程也从 `main()` 函数的开头重新执行所有指令,那么它在执行到 `fork()` 时又会创建一个新的子进程,这样就会形成无限递归的进程创建过程,最终导致系统资源耗尽,电脑可能会崩溃。为了避免这种情况发生,`...
当可执行文件开始运行之后,就变为了系统中的一个进程,一个程序(可执行文件)运行起来之后可以创建多个进程执行,称之为多进程程序。 每个进程包含有进程运行环境、内存地址空间、进程ID、和至少一个被称为线程的...
`fork()`调用成功后,会在父进程和子进程中各返回一次,返回值有所不同:在父进程中返回新创建子进程的PID,在子进程中返回0。 接下来,我们探讨一下`fork.c`文件可能包含的内容。在`fork.c`中,通常会看到以下步骤...
运行截图将展示FORK创建子进程后的效果,比如如何在终端中观察两个进程的输出,以及如何验证父进程和子进程独立执行各自的代码。此外,源代码部分将提供清晰的示例,解释如何实现FORK创建子进程,并展示如何在代码中...
在《OS.rar_fork孙子进程_创建孙子进程》这个主题中,我们将深入探讨`fork()`如何被用来创建子进程以及孙子进程,以及`exec()`函数族在这一过程中的作用。 `fork()`函数是一个非常特殊的函数,当它被调用时,操作...
通过对`fork()`函数的学习,我们可以了解到它是如何通过创建子进程来实现多进程编程的。同时,我们还探讨了`fork()`函数的一些高级应用场景,如递归创建子进程等。掌握了这些基本知识点后,开发者可以在更复杂的场景...
进程创建函数fork()的基础实验,具体看博客http://blog.csdn.net/mybelief321/article/details/9046955
当父进程调用`fork()`时,操作系统会复制父进程的所有资源(如内存空间、文件描述符等)给新创建的子进程,形成一份完全独立的副本。因此,`fork()`之后,会返回两次:一次在父进程中,一次在子进程中,返回值分别是...
进程的创建 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时, 在系统中有一个父进程和两个子进程活动。 让每一个进程在屏幕上显示...子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果
通过上述分析,我们可以清楚地看到 `fork` 函数如何创建子进程,并且每个进程在 `fork` 后如何分别继续执行剩下的代码。此外,此题也展示了进程间父子关系的基本概念,以及子进程是如何继承父进程的状态。这一知识点...
fork一个进程,fork()函数fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,这个新产生的进程称为子进程。一个进程调用fork()函数后,系统先给新的进程...
1. 服务器端代码,演示如何创建套接字、监听连接、使用fork创建子进程以及处理数据传输。 2. 客户端代码,展示如何创建套接字、连接服务器并进行双向通信。 3. 可能还包括配置文件或脚本,用于启动和管理服务器进程...
总结起来,`fork()`是Linux系统中创建子进程的基础,它的巧妙之处在于通过单一的调用产生了两个独立的执行线程。开发者可以通过`fork()`返回的值来识别并管理父子进程,进一步利用C语言提供的系统调用来实现进程间的...
它通过调用内核来创建一个与调用进程几乎完全一样的副本,这个副本被称为子进程。`fork()`函数调用后,会返回两次,一次是在父进程中,一次是在子进程中。返回值是不同的,这使得父进程和子进程可以区分彼此并进行...