代码-ubuntu上进程生成并且调度子进程执行不同的任务

问题描述

ubuntu上进程生成并且调度子进程执行不同的任务

如何编写一个总进程调度其他的子进程执行不同的任务,可不可以发点代码,实例讲解一下,个人较笨,才开始看关于进程的知识,照着书上敲了一天结果是错的

解决方案

#include
#include
#include
int global;//全局变量,在数据段中
int main()
{
pid_t pid;
int stack =1;//局部变量,在栈中
int *heap;

heap = (int*)malloc(sizeof(int));//动态分配内存,在堆中
*heap = 2;//把申请的内存的内容设置为2
pid = fork();//创建子进程
if(pid<0)
{
printf("Fail to forkn");
exit(1);
} else if (pid==0) {//这是子进程
global++;
stack++;
(*heap)++;
printf("the child ,data:%d,stack:%d,heap:%dn",global,stack,*heap):
exit(0); }//子进程运行结束

        sleep(2);//父进程休眠2秒钟,保证子进程先运行
        printf("the parent,data:%d,stack:%d,heap:%dn",global,stack,*heap);
        return 0;

}

代码是摘抄的一段,我在FEDORA 21上,运行没有问题。在创建子进程的方式还有一个,就是用vfork(),这个函数可以保证子进程先于父进程运行,fork()函数创建的子进程在没有其他措施的情况下,比如用了WAIT(),和waitpid()措施,父子进程运行的先后是不确定的。
fork()函数创建的子进程会复制父进程的数据段,堆栈段,但是不复制代码段。就是说子进程的动作不会影响父进程的结果,上面的代码可以说明这一点。
vfork()则会复制父进程的代码段,这会影响父进程的结果。你可以试着把上述代码的fork()替换为vfork(),再观察运行结果,也可以验证。

时间: 2024-09-17 04:48:41

代码-ubuntu上进程生成并且调度子进程执行不同的任务的相关文章

c-ubuntu上进程生成并且调用子进程执行不同的任务

问题描述 ubuntu上进程生成并且调用子进程执行不同的任务 求大神来个demo好好的讲解一下,就是用c或者c++写一个进程生成并且调用子进程去执行不同的任务,书上的demo都被敲烂了,还是错的,求个可以运行的demo. 解决方案 #include <unistd.h> #include <sys/types.h> main() { pid_t pid; printf("n[%d]not fork pid=%dn",getpid(),pid); pid=fork

在ubuntu上关于生成一个后台进程一直活在,直到收到结束的信号量才自动结束

问题描述 在ubuntu上关于生成一个后台进程一直活在,直到收到结束的信号量才自动结束 我了解了用setprgp()和setsid()让他变为一个后台的进程,但是如何让他不死,直到有一个信号量传入才死.大神给个代码教学一下.谢谢了 解决方案 condition_variable 等待一个状态变量

《OpenStack实战指南》—— 2.1 在Ubuntu上使用二进制包安装

2.1 在Ubuntu上使用二进制包安装 笔者写本书的时候,OpenStack已经发展到Havana版本,几大主流的Linux发行版本都会将OpenStack的源代码做成各自平台的二进制安装包,以供用户使用.随着OpenStack使用的人越来越多,发行版本对Linux的支持力度也越来越大,就目前来看,Ubuntu(Debian).RedHat.OpenSUSE都有相应的包和开发定制的安装程序.当然,各个Linux平台上的包制作发布的时间各有快慢,同时支持的版本更新也有快有慢.Ubuntu是更新最

Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码

Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码 问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubuntu上有什么可行的方法来下载完整的内核源码呢? 在给你的Linux安装完整内核源码之前,先问问自己是否真的需要这样做.如果你仅仅是尝试去编译一个内核模块或是为内核定制驱动,你并不需要完整的内核源码树.你只需要安装一些与内核对应的头文件,这样就足够了. 只有在你需要生成一个定制的内核,而且内核源码中的

ubuntu上配置Nginx+PHP5 FastCGI服务器配置

ubuntu上配置Nginx+PHP5 FastCGI服务器配置_nginx_脚本之家 首先安装或编译Nginx. 安装Nginx 源码包可以在官方主页上下载.Ubuntu 9.04可以直接通过apt安装,也可以从这里下载最新的deb包:sudo apt-get install nginx 如果要自己编译的话,需要确保自己已经有编译器和PCRE的库(用于Nginx的rewrite模块,如果不需要这个模块可以在configure时使用./configure –without-rewrite).编译

在Ubuntu上部署开源博客系统Blog_mini

0.说明         本文为开源博客系统Blog_mini的官方部署文档,通过本文的阅读,你将可以在一个全新的CentOS系统上完全部署Blog_mini,从而成功架设属于你的个人博客网站.         这里使用的操作系统为:Ubuntu 15.10,理论上,只要操作系统上安装的Python版本为2.6.x或2.7.x,都可以成功部署Blog_mini. 1.获取Blog_mini源代码         有以下两种方式可以获取Blog_mini的源代码: 通过git的方式 通过Blog_

在ubuntu上部署Kubernetes管理docker集群示例

本文通过实际操作来演示Kubernetes的使用,因为环境有限,集群部署在本地3个ubuntu上,主要包括如下内容: 部署环境介绍,以及Kubernetes集群逻辑架构 安装部署Open vSwitch跨机器容器通信工具 安装部署Etcd和Kubernetes的各大组件 演示Kubernetes管理容器和服务 关于 Kubernetes 系统架构及组件介绍见这里. 1. 部署环境及架构 vSphere: 5.1 操作系统: ubuntu 14.04 x86_64 Open vSwith版本: 2

《OpenStack实战指南》—— 2.2 在Ubuntu上使用源代码编译安装

2.2 在Ubuntu上使用源代码编译安装 对于各个版本的Linux来说,都会制作OpenStack相应的软件包.虽然在2.1节中介绍了二进制包安装,但是在这里笔者还是会讲一下源代码安装OpenStack基本组件的过程,因为从学习的角度来说,通过源代码安装OpenStack各个组件的过程,可以使读者对OpenStack的框架和各个组件的作用有一个比使用二进制安装更全面的了解.另一个好处是,二进制包的发布会滞后于源代码,如果想在第一时间尝试一些最新的功能或修复Bug后的版本,源代码安装是个不错的选

ubuntu上配置Nginx+PHP5 FastCGI服务器配置_nginx

首先安装或编译Nginx.安装Nginx源码包可以在官方主页上下载.Ubuntu 9.04可以直接通过apt安装,也可以从这里下载最新的deb包:sudo apt-get install nginx如果要自己编译的话,需要确保自己已经有编译器和PCRE的库(用于Nginx的rewrite模块,如果不需要这个模块可以在configure时使用./configure –without-rewrite).编译方法如下:wget http://sysoev.ru/nginx/nginx-0.5.34.t