实验目的
通过编写多进程程序,熟练掌握fork()、exec()、wait()和waitpid()等函数的使用,进一步理解在Linux中多进程编程的步骤。
实验内容
该实验有3个进程,其中一个为父进程,其余两个是该父进程创建的子进程,其中一个子进程运行“ls -l”指令,另一个子进程在暂停5s后异常退出。父进程先用阻塞方式等待第一个进程的结束,然后用非阻塞方式等待另一个子进程的退出,待收集到第2个子进程结束的消息后,父进程就返回。
实验步骤
该实验的流程图如下
实验源代码
先看一下下面的代码,这个程序能得到我们所希望的结果吗?它的运行会产生几个进程?
执行结果如下图
也有可能会出现下面的结果
分析执行结果可以指知道,这里其实是产生了3个子进程,在子进程2中又产生了一个子进程1。
下面咱们贴出正确的实验代码:
执行结果如下图
不论程序执行多少次,结果都是一样的。对比上一个结果,咱们就可以理解多进程该怎么创建了。一定要明确创建子进程的父进程是哪一个。
相关推荐
### Linux下C语言编程——进程的创建 #### 一、进程的概念 在现代操作系统中,程序与进程是两个重要的概念。...通过掌握这些基本知识,开发人员可以更加高效地编写多任务程序,并充分利用Linux系统提供的强大功能。
本资料集专注于"Linux编程技术-多线程-网络编程",它涵盖了UNIX环境高级编程、Linux网络编程、Linux多线程编程、Linux窗口编程以及Linux脚本编程等多个核心主题。这些内容都是构建高效、可靠且可扩展的Linux应用的...
7. **Linux高级进程通信**:涉及socket编程(本地通信)、命名管道、消息队列等进程间通信方式,这些都是多进程协作的重要手段。 8. **Linux线程管理**:讲解如何在Linux中创建、挂起、终止线程,以及使用互斥锁、...
Linux编程教程——Linux下编程入门 在Linux操作系统中进行编程是一项重要的技能,尤其对于系统级开发者和软件工程师来说。Linux提供了丰富的开发环境和工具,支持多种编程语言,如C、C++、Python、Java等。本教程将...
在Linux系统中,C语言编程涉及的一个重要概念是进程的创建。进程是操作系统中的核心单元,它们代表了程序的执行实例。...通过对这些概念和技术的深入学习和实践,开发者可以更好地构建和维护多任务的Linux应用程序。
11. **Shell脚本**:虽然不是C编程的一部分,但了解基本的Linux Shell脚本编写能力可以帮助自动化日常任务,与C程序配合使用效果更佳。 12. **标准库和GNU扩展**:Linux下有许多标准库如`stdio.h`、`stdlib.h`等,...
4. **进程与线程**:Linux是一个多任务操作系统,C语言提供了系统调用(如fork、exec系列、waitpid)来创建和管理进程。同时,线程(pthread库)的使用可以让程序实现并行执行,提高效率。 5. **信号处理**:信号是...
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...
进程上下文切换是操作系统在多任务环境下,为了分配处理器时间而进行的进程状态转换。虚拟存储器使得每个进程都有独立的地址空间,简化了存储管理并保护了进程间的隔离。文件系统,尤其是虚拟文件系统(VFS),为...
总结来说,理解和掌握这些Linux进程管理的知识点对于进行高级编程至关重要,它们是编写高效、可靠的多线程和多进程应用程序的基础。理解这些概念有助于开发者解决并发问题,优化资源使用,并确保程序的稳定性和安全...
进程是系统中程序执行和资源分配的基本单位,每个进程都有独立的地址空间、数据段、代码段和堆栈段。相比之下,线程是进程内部的执行单元,多个线程可以共享同一个进程的资源,如内存、文件描述符和信号处理机制,...
Linux环境高级编程是深入理解操作系统内核以及如何在Linux系统上高效编写程序的关键领域。这份“Linux环境高级编程6-作业及考察要求-2015.ppt”文档包含了几个针对这一主题的重要作业和考察点,旨在提升学生对Linux...
《Linux编程接口 - Linux和UNIX系统编程手册》是一本深入探讨Linux和UNIX系统编程的权威著作,由Michael Kerrisk撰写。这本书详尽地介绍了Linux操作系统下的编程接口,涵盖了广泛的系统调用、库函数以及相关的编程...
实验二的目的是让学生深入理解嵌入式Linux环境下的多线程编程,这涉及到对线程概念、创建和管理的理解,以及如何在编程中引入线程库。线程是操作系统资源调度的基本单位,允许在一个进程中并发执行多个执行路径,...