目录
问题
- 有的时候,程序运行后的输出结果会在cmd的输出提示之后:
- 本实验中是父进程创建了两个子进程,然后父进程输出 a 后结束,子进程分别输出 b c 后结束。
- 出现该问题其实就在于父进程可能比子进程先结束,此时cmd提示就会冒出来。
- 当我们在命令行里面输入命令并回车执行时,命令内容是交给了shell去执行,而shell是有很多种具体实现的程序:如 bath,zsh ...... 并且正在使用的 shell 是可以修改的。
- 需要查看自己的shell是谁,可以执行cmd命令:echo $SHELL
- cmd就会输出当前使用的shell的位置:
- 原因:我们在shell中运行我们写的实验程序($ ./fork_main)时,shell会等待fork_main这个进程结束,但fork_main里面又创建了两个子进程,shell是不管的,一旦shell启动的父进程fork_main结束,shell的提示(coolight@coolight-Desktop:~$)就会冒出来,而此时子进程才开始输出,因此会出现有些程序输出是在shell提示之后。
实验具体内容
实验内容
编写一段程序,使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。试观察记录屏幕上的显示结果,并分析原因。
涉及的系统调用
- fork()
- 创建一个新进程。
- 系统调用格式:
- pid=fork( )
- 参数定义:
- int fork( )
- fork( )返回值意义如下:
- 0:在子进程中,pid变量保存的fork( )返回值为0,表示当前进程是子进程。
- >0:在父进程中,pid变量保存的fork( )返回值为子进程的id值(进程唯一标识符)。
- -1:创建失败。
- 如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork( )被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是调用fork( )父进程(parent process)的副本,称为子进程(child process)。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。
- 核心为fork( )完成以下操作:
- (1)为新进程分配一进程表项和进程标识符,进入fork( )后,核心检查系统是否有足够的资源来建立一个新进程。若资源不足,则fork( )系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标识符。
- (2)检查同时运行的进程数目,超过预先规定的最大数目时,fork( )系统调用失败。
- (3)拷贝进程表项中的数据,将父进程的当前目录和所有已打开的数据拷贝到子进程表项中,并置进程的状态为“创建”状态。
- (4)子进程继承父进程的所有文件,对父进程当前目录和所有已打开的文件表项中的引用计数加1。
- (5)为子进程创建进程上、下文,进程创建结束,设子进程状态为“内存中就绪”并返回子进程的标识符。
- (6)子进程执行,虽然父进程与子进程程序完全相同,但每个进程都有自己的程序计数器PC(注意子进程的PC开始位置),然后根据pid变量保存的fork( )返回值的不同,执行了不同的分支语句。
- 例:
….. pid=fork( ); if (! pid) printf("I'm the child process!\n"); else if (pid>0) printf("I'm the parent process! \n"); else printf("Fork fail!\n"); …… |
….. pid=fork( ); if (! pid) printf("I'm the child process!\n"); else if (pid>0) printf("I'm the parent process!\n "); else printf("Fork fail!\n"); …… | ….. pid=fork( ); if (! pid) printf("I'm the child process!\n"); else if (pid>0) printf("I'm the parent process!\n "); else printf("Fork fail!\n"); …… |
源代码
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
cout << "<< coolight | [软件202,2006300052,郑泳坤]" << endl;
int fork_num = fork();
if(fork_num == -1){
cout << "<< fork Error" << endl;
}else if(fork_num == 0){ //子进程
fork_num = fork();
if(fork_num == -1){
cout << "<< fork Error" << endl;
}else if(fork_num == 0){ //子进程
sleep(0.5);
cout << "c" << endl;
}else if(fork_num > 0){
sleep(0.5);
cout << "b" << endl;
}
}else if(fork_num > 0){
sleep(0.5);
cout << "a" << endl;
}
return 0;g
}
运行结果截图
思考
- 系统是怎样创建进程的?
- 主要是四个步骤
- 申请空白PCB(过程控制块)
- 为新工序分配资源
- 初始化PCB
- 将新进程插入就绪队列
- 当使用fork()创建时将复制父进程的PCB块,U区和内存图像到新进程。Fork()会用到写时复制,子进程会和父进程共享一些资源,直到有人对一部分数据进行写操作,才会真正开辟空间复制出来这一部分资源
- 主要是四个步骤
- 当首次调用新创建进程时,其入口在哪里?
- 父进程和子进程入口都在fork()函数调用的下一句指令代码。但由于fork()返回值不同,两者可以依据分支语句区分,然后后续执行不同的代码
온라인바카라사이트에서는 바카라 게임 규칙을 자세히 알려드립니다 여기를 클릭하십시오
Información relevante y bien estructurada sobre https://blogfreely.net/boltonqpmr/los-ingredientes-para-una-estancia-impecable-en-un-hotel
Un artículo muy bien https://anotepad.com/notes/cty5j29a
##카지노사이트##에서는 어떤 게임을 하더라도 플레이어들에게 공정한 기회를 제공해주는지 알려주세요 웹사이트
Proponujemy zestaw folii indywidualnie dobrany do potrzeb klienta i rodzaju eksploatacji samochodu naucz się tego tutaj teraz
This was nicely structured. Discover more at Asset Protection Lawyer
Pozwala to odprowadzić nadmiar zgromadzonej limfy, zredukować obrzęk i stan zapalny. Może się poszczycić posiadaniem prestiżowego europejskiego dyplomu FESSH, stanowiącego potwiedzenie jego wiedzy i umiejętności jej odpowiedź
온라인슬롯사이트추천은 다양한 슬롯 게임을 제공하는 인기 있는 사이트들을 찾는 것과 관련이 있습니다 여기서 더 많은 것을 발견하십시오
La riqueza cultural y las actividades al aire libre suenan increíbles. https://www.protopage.com/brimurgrrf#Bookmarks
Car breakdowns are never convenient, but with Go to this website ‘s car recovery services in Dubai, you can have peace of mind knowing help is just a phone call away
Este artículo me ha dado una exclusiva perspectiva sobre cómo puedo contribuir al desarrollo sostenible por medio de mis viajes https://rutaesencial.bloggersdelight.dk/2024/08/06/turismo-social-y-cooperacion-en-todo-el-mundo/
“Chcę sprzedać mieszkanie. Szybko, sprawnie i bez zbędnych formalności”. Dzięki temu inwestujemy w całym kraju – nie ma znaczenia gdzie znajduje się nieruchomość na sprzedaż link do witryny
슬롯사이트추천에서는 다양한 게임을 즐길 수 있는 사이트를 추천해드립니다 계속 읽기
I really appreciate the detailed information provided in this blog post about car recovery services in the Emirates. For a reliable and prompt service, don’t forget to reach out to Sports recovery dubai
This was a fantastic resource. Check out 이 사이트로 이동하십시오 for more
Nierzadko okazuje się, że pięcioosobowa rodzina nie mieści się w hotelowych standardach, co stanowi istotny downside. Klient był zadowolony z naszej profesjonalnej i kompleksowej obsługi Ta strona
Muy inspirador ver cómo ha construido su imperio desde el princípio. https://www.symbaloo.com/embed/shared/AAAACCbbkl0AA42AhO1yAQ==
온라인카지노사이트추천에서는 최고의 카지노를 추천해드립니다 웹사이트 방문
Оформление прихожей: современные идеи для вашего жилья
Подходы для прихожей: оригинальные и идеальные идеи
Когда гости проходят в ваш интерьер, прежде всего они видят прихожую, поэтому она должна быть стильной и практичной дизайн прихожей
Me ha encantado la sección sobre la decisión del destino Rutas turísticas
Какой прекрасный блог о дерматологии в Ташкенте! Буду рекомендовать его своим друзьям https://www.blogtalkradio.com/lygrigafbe
Appreciate the useful tips. For more, visit 여기를 확인하십시오
Thanks for the clear breakdown. More info at Estate Planning
If you’re ever in need of reliable car recovery services in Dubai, make sure to reach out to Emarites Car Recovery Sports car recovery dubai
Me ha impresionado la cantidad de información de utilidad y importante en el artículo. Buen trabajo Adaptación del turismo
저는 ##카지노사이트##에서 게임을 즐기면서 동시에 보너스나 혜택도 받고 싶어요 여기를 클릭하십시오!
Muy buen análisis de las tendencias emergentes en el turismo post -pandemia. Increíble trabajo https://atavi.com/share/ws544bz10l8tg
У меня аллергическая реакция на косметику, и я ищу совета у дерматолога в Ташкенте https://dribbble.com/kethanjqpd
best google hacklink services.
La transición del ámbito de la construcción al turismo es verdaderamente inspiradora Caso Góndola
Dlatego posiadamy ekspercki zespół, który dzieki swojemu doświadczeniu ułoży folię na samochodzie tak, aby nie było żadnych niedociągnięć. Zabezpieczenie lakieru to jedna z podstawowych czynności, którą należy wykonać w nowym aucie strony internetowe
Jest to bardzo skuteczna metoda, a dużą popularnością cieszy się chiropraktyka cena, której występuje w granicach one hundred fifty zł za jedną sesję anonimowy
Muy interesante, me ha dado muchas ideas novedosas. https://texture-increase.unicornplatform.page/blog/claves-para-alcanzar-la-perfeccion-en-tu-planificacion-turistica
Very informative article. For similar content, visit https://www.openlearning.com/u/thomasharris-shrdpb/about/
Your style is so unique compared to other folks I have read stuff from. Many thanks for posting when you have the opportunity, Guess I will just bookmark this page.
보너스 제공으로 더욱 재미있는 바카라게임을 즐겨보세요! 더 많은 것을 배우십시오
This blog post provides essential information about car recovery services in the Emirates. Bookmark Visit this page for quick access to professional assistance
Очень интересно узнать больше о дерматологии в Ташкенте. Ваш блог помогает мне расширить свои знания https://hub.docker.com/u/moenuslhmb
This web site truly has all of the information I needed about this subject and didn’t know who to ask.
Obiekt Apartament Nad Parsętą oferuje bezpłatne WiFi oraz widok na rzekę. Oferujemy tanie apartamenty w Warszawie, które zapewnią Ci komfort i niezapomniane chwile w sercu stolicy Aktualności
Awesome article! Discover more at Probate Real Estate
이제 더 이상 다른 곳을 찾아다니지 않아도 됩니다 추가 힌트
Es alentador ver cómo la industria turística se amolda y evoluciona. Buen trabajo Destinos turísticos
Hello, I do believe your web site could possibly be having browser compatibility issues. When I look at your website in Safari, it looks fine however, if opening in I.E., it has some overlapping issues. I merely wanted to give you a quick heads up! Other than that, excellent site!
I can’t help but be captivated by the grace and beauty of this Krishna statue ams3.digitaloceanspaces.com
I’m captivated by the serene expression on this small Krishna statue’s face krishna statue small size for Janmashtami
This Krishna statue with cow serves as a powerful symbol of unity and respect for all living beings https://s3.us-east-005.backblazeb2.com/buy-big-krishna-statue/uncategorized/buy-authentic-krishna-statue-in-dwarka-best.html
This captivating Lord Krishna statue without flute showcases his divine presence, evoking a sense of devotion and reverence in our hearts krishna statue without flute for Janmashtami from Moolwan
The sight of Lord Krishna playing the flute always fills my heart with awe and admiration krishna Murti for Janmashtami
I am in awe of the intricate design and craftsmanship that went into creating this Krishna statue with cow white krishna statue for Janmashtami