提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
实验目的
了解系统进程的查看和控制,了解多进程程序的设计与执行。
实验截图

实验内容
父进程获得要执行的命令,并且交给子进程执行。父进程等待子进程结束,并且打印子进程的返回值。
一、实验步骤
(1)主进程执行
(2)fork创建子进程
(3)子进程成功创建后,调用excel函数,执行要求操作
(4)新进程退出,被主进程获取返回值
(5)父进程退出,程序结束
二、程序和运行代码
1.引入头文件,使用命名空间
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<stdlib.h>
#include<iostream>
#include<string>
#include<errno.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<cstdlib>
using namespace std;
2.多进程读取目录
int main(int argc,char *argv[])
{
pid_t pid;
int status;
cout<<"OriginalID:"<<getpid()<<endl;
printf("process begin...\n");
string as="ls";
pid=fork();
if(0 == pid)
{
cout<<"Child created"<<endl;
cout<<"Child process ID:"<<getpid()<<endl;
execl("/bin/ls", "ls", NULL);//表示后边的参数为可变参数,以一个空指针结束。第一个参数就是程序名。
cout<<"Now, child process end with:0"<<endl;
exit(0);
}
wait(&status);
if(WIFEXITED(status))
{
cout<<"This is father process. Child process end with:"<<WEXITSTATUS(status)<<endl;
//printf("this is parent, child normal, status = %d\n",WEXITSTATUS(status));
}
cout<<"Father process end with:0"<<endl;
return 0;
实验心得
在这次实验中,我学会了在C++之中调用excel函数,利用它与fork配合,在新进程中调用程序。我对excel的使用有了初步了解,对exce类型的函数也有了初步认识,学会了exce类最简单的使用方法。我学会了观察一个进程是否退出以及汇报它的返回值。
本课程资源包
我整理了本课程一学期的四次实验和作业,带有详解,内含期末复习资料和课件。链接:
链接:https://pan.baidu.com/s/1cvvO_ntbqad5Xa-hbvHZQg
提取码:f2t0
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V1的分享
本文介绍了如何在Linux环境下,使用C++通过exec函数创建多进程来执行另一个程序。实验内容包括父进程创建子进程,子进程调用指定命令,如excel,然后父进程等待并获取子进程的返回值。通过这个过程,作者加深了对进程控制和多进程编程的理解。
&spm=1001.2101.3001.5002&articleId=113526877&d=1&t=3&u=c53e1f933b63485997e165543689c9fc)
194

被折叠的 条评论
为什么被折叠?



