zoukankan      html  css  js  c++  java
  • 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

    ??

  • 相关阅读:
    LeetCode 79. 单词搜索
    LeetCode 1143. 最长公共子序列
    LeetCode 55. 跳跃游戏
    LeetCode 48. 旋转图像
    LeetCode 93. 复原 IP 地址
    LeetCode 456. 132模式
    LeetCode 341. 扁平化嵌套列表迭代器
    LeetCode 73. 矩阵置零
    LeetCode 47. 全排列 II
    LeetCode 46. 全排列
  • 原文地址:https://www.cnblogs.com/Ph-one/p/4593770.html
Copyright © 2011-2022 走看看