linux中应用程序main函数中没有开辟进程的,它应该在那个进程中运行呢?
1.main函数是一个进程还是一个线程?
不知道你是用c创建的,还是用java创建的。
因为它们都是以main()做为入口开始运行的。
是一个线程,同时还是一个进程。
在现在的操作系统中,都是多线程的。但是它执行的时候对外来说就是一个独立的进程。
这个进程中,可以包含多个线程,也可以只包含一个线程。
当用c写一段程序的话,就是在操作系统中起一个进程它包含一个线程。
而当用java等开发一个多线程的程序的话,它在操作系统中起了一个进程,但它可以包含多个同时运行的线程。
你起一个CS游戏,这上CS游戏在操作系统中就是一个进程。
但是这个游戏一边在打枪,一边人在走动,一边还有音乐 ,
打枪 , 走动 , 音乐 等都是一些线程。
线程不是由进程决定了。
这样会不会明白一点。
也就是说:你在操作系统中启动的任一个独运行的程序或者软件都是一个进程。
包括你在Linux中运行top时,它也是一个进程(当然很多人说成是线程),它有独立的进程ID,
可以用ps -ef| grep top的方式查看,并可以用kill 进程ID杀掉的。
但是这个进程包括几个线程,是由你的需求决定的,在写程序时由程序逻辑决定的;
而这些线程是包含在这个进程中的,而且这些线程他们共用CPU资源,在工作的过程
中需要不断的进行切换,轮换CPU时断,而各个线程在进行轮换时会共用进程的一些共享区域(或者交换空间)。其它的没有什么。
2.在Linux中编程,在main主函数中调用fork(),创建新进程。谁是父进程?是main函数所在的进程为父进程吗?谢谢!
是的. main()函数所在的进程是父进程, 用fork()创建的是子进程.
fork返回值大于0的是父进程,否则是子进程
http://www.360doc.com/content/08/1123/13/36491_1984855.shtml
http://www.cnblogs.com/skynet/archive/2010/10/30/1865267.html
??
linux中应用程序main函数中没有开辟进程的,它应该在那个进程中运行呢?的更多相关文章
- 问题:C#控制台程序参数;结果:设置与读取C#控制台应用程序Main函数中的参数args
设置与读取C#控制台应用程序Main函数中的参数args 在项目属性面版->调试->命令行参数设置.空格分隔.读取:string[] str = Environment.GetComman ...
- 多玩YY语音的面试题:C++中如何在main()函数之前执行操作?
多玩YY语音的面试题:C++中如何在main()函数之前执行操作? 第一反应main()函数是所有函数执行的开始.但是问题是main()函数执行之前如何执行呢? 联想到MFC里面的 C**App类的t ...
- C/C++中如何在main()函数之前执行一条语句?
在C语言中,如果使用GCC的话,可以通过attribute关键字声明constructor和destructor(C语言中如何在main函数开始前执行函数) #include <stdio.h& ...
- 转:iOS程序main函数之前发生了什么
原文地址:http://blog.sunnyxx.com/2014/08/30/objc-pre-main/ 我是前言 一个iOS app的main()函数位于main.m中,这是我们熟知的程序入口. ...
- iOS程序main函数之前发生了什么
我是前言 一个iOS app的main()函数位于main.m中,这是我们熟知的程序入口.但对objc了解更多之后发现,程序在进入我们的main函数前已经执行了很多代码,比如熟知的+ load方法等. ...
- Keil开发的ARM程序main函数之前的汇编分析
Keil开发的ARM程序main函数之前的汇编分析 ——BIN文件中RW段的数据移动 系统平台: STM32系列STM32F103ZE,512KB内部FLASH,64KB片内存储; FLASH地址范围 ...
- C语言中的程序终止函数
在C语言的标准库<stdlib.h>中提供了一些与正常或者不正常的程序终止有关的函数,下面分别对其进行简单介绍. 参考文献: [1] C和指针,P298,342 [2] C程序设计语言现代 ...
- go源文件中是否有main函数
import ( "go/parser" "go/token" "go/ast" ) func HasMain(file s ...
- Linux下main函数启动过程【程序员自我修养笔记】【自用】
1. 入口函数和程序初始化 1.1 程序从main开始吗? 当程序执行到main函数的第一行时,很多事情都已经完成了: [证1]如下是一段C语言代码: 代码中可以看到,在程序刚刚执行到main的时候, ...
随机推荐
- 使用Mybatis Generator 生产 AS400中的数据表对象
第一次使用Mybatis,由于公司核心服务器是AS400,参考了网络各个大大的教程后,发现无法使用Mybatis Generator自动生成AS400中的表对象 参考URL: http://www.c ...
- java concurrent包的学习(转)
java concurrent包的学习(转) http://my.oschina.net/adwangxiao/blog/110188 我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常 ...
- asp.net导出Excel 按照预定格式,以及解决导出乱码
protected void ToExcel() { //新建一个Gridview,原因:避免当前窗口GridView外层没有直接跟form标签,从而避免“gridview1未包含在run='serv ...
- (转载)linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
linux下tar.gz.tar.bz2.zip等解压缩.压缩命令小结 bz2 tgz z等众多压缩文件的压缩与解压方法,需要的朋友可以参考下 1) Linux下最常用的打包程序就是tar了,使用ta ...
- 浅析nginx的负载均衡
Nginx 的 HttpUpstreamModule 提供对后端(backend)服务器的简单负载均衡.一个最简单的 upstream 写法如下: upstream backend { server ...
- 关于分区技术的索引 index
关于分区技术---索引 Index 一. 分区索引分类: 本地前缀分区索引(local prefixedpartitioned index) 全局分区索引(global partitionedin ...
- [译] ASP.NET 生命周期 – ASP.NET 上下文对象(八)
使用 HttpResponse 对象 HttpResponse 对象是与 HttpRequest 对象相对应的,用来表示构建中的响应.它当中提供了方法和属性可供我们自定义响应,有一些在使用 MVC 视 ...
- Ext Grid 加载超时设置timeout: 180000
var insideGridStore = Ext.create('Ext.data.Store', { model: 'CarComponents',//这个地方CarComponents不是一个对 ...
- 【BZOJ 1834】 [ZJOI2010]network 网络扩容
Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不扩容的情况下,1到N的最大流: 2. 将1到N的最大流增加K所需的 ...
- Create CSS3 Buttons Compatible with All Browsers
Create CSS3 Buttons Compatible with All Browsers http://www.ourtuts.com/create-css3-buttons-compatib ...