关于创建进程,到底是如何看待这个

问题描述

关于创建进程,到底是如何看待这个

本人感觉小白一个,刚学完操作系统原理,可是进程和线程总是很难理解啊,从编程的角度来讲:这都是面向对象的东西,实际编程时感觉很难下手,从理论到实践真的是差别很大,感觉用先前的c语言的知识很难理解执行顺序。如下代码
#include
#include
int main(int argc, char ** argv )
{
int pid = fork();
if (pid < 0)
{
printf("error!");
}
else if( pid == 0 )
{
printf("This is the child process!");
}
else{
printf("This is the parent process! child process id = %d", pid);
}
return 0;
}
1 运行时为什么先输出This is the parent process! child process id = %d"后输出This is the child process!,从程序的执行角度真的很难理解啊。
2 应该说创建一个进程就是运行一个程序,比如vc下的createProcess()启动了一个程序,比如说可以启动记事本程序,而linux下的调用fork()是做了什么,比如上面的程序好像感觉是启动了一个线程(书上说线程是一个执行代码,有自己的入口函数地址)
3 创建进程是父进程的一个副本,它将获得父进程数据空间、堆、栈等资源的副本,但是不共享,操作系统为他开辟与父进程不同的地址空间,我能否理解为子进程重新运行上面的程序,或者说执行一次运行了两个程序。
我也有点头大了,暂时想到这些,真心请教!!!!

时间: 2024-11-01 21:44:33

关于创建进程,到底是如何看待这个的相关文章

python创建进程fork用法

  本文实例讲述了python创建进程fork用法.分享给大家供大家参考.具体分析如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #!coding=utf-8 import os ,traceback import time ''' fork()系统调用是Unix下以自身进程创建子进程的系统调用, 一次调用,两次返回,如果返回是0, 则是子进程,如果返回值>0,则是父进程(返回

Python使用multiprocessing创建进程的方法

  本文实例讲述了Python使用multiprocessing创建进程的方法.分享给大家供大家参考.具体分析如下: 进程可以通过调用multiprocessing的Process进行创建,下面代码创建两个进程. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@localhost ~]# cat twoproces.py #!/usr/bin/env python from multiprocessing import Process import os def ou

Windows操作系统下创建进程的过程

  进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位.程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体.而进程则不同,它是程序在某个数据集上的执行,是一个动态实体.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程. 线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位.线程不能够独立执行,必须依存在进程中,由

多进程-python在自定义的函数中不停创建进程

问题描述 python在自定义的函数中不停创建进程 windows下,用python写了一个多进程的代码,遇到问题 from multiprocessing import Processdef count(): num = 100000 while num>0: num -= 1 print ""done""def creat(): p = Process(target=count) p.start() p.join()if __name__ == '__ma

VC创建进程CreateProcess的方法_C 语言

本文实例讲述了VC创建进程CreateProcess的方法.分享给大家供大家参考.具体实现方法如下: #include "stdafx.h" #include <windows.h> #include <stdio.h> int main (int argc,char* argv[]) { char szCommandLine[]="cmd"; STARTUPINFO si={sizeof(si)}; PROCESS_INFORMATION

WinApi学习笔记-创建进程

#include <windows.h> #include <stdio.h> #include <iostream> DWORD CreateChildProcess(LPSTR szChildProcessCmd); int main() { CreateChildProcess("Child.exe"); } DWORD CreateChildProcess(LPSTR szChildProcessCmd) { //启动信息结构变量 START

如何获取某个进程的主窗口以及创建进程的程序名

在编写工具程序以及系统管理程序的时候.常常需要获取某个进程的主窗口以及创建此进程的程序名.获取主窗口的目的是向窗口发送各种消息.获取启动进程的程序名可以控制对进程的操作.但是有些进程往往有多个主窗口.你要的是哪一个主窗口呢?如果你用过Outlook程序,你就会发现它有多个主窗口,一个窗口列出收件箱和其它文件夹.如果你打开e-mail,便会有另外一个窗口显示信息.它们都是没有父窗口(或者说宿主窗口)的主窗口.运行一下Spy程序,你甚至会发现它们的窗口类名都相同:rctrl_renwnd32.资源管

linux中fork创建进程讲解(转)

大家知道Linux中创建子进程的一个很好的方法是函数调用fork,但是很多初学者对fork的理解上可能有点困难.我们举个例子来看看fork的用法吧.         大家用fork的时候记住fork是"分叉"的意思就很好理解了.         记得初学fork() 函数及遇到这个函数时,总是不能理解fork为什么会这样写,就会分成父子两个进程.    先看一下fork() 的经典模式 //------------------------------------------------

查看linux的进程到底用了多少内存

1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有    (1). ps aux:      其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存.            RSS列 表示, 程序占用了多少物理内存.            虚拟内存可以不用考虑,它并不占用实际物理内存.    (2). top 命令也可以      其中  VIRT(或VSS)列  表示,程序占用了多少虚拟内存. 同 ps aux 中的 VSZ列            RES列 表示