Linux下进程创建分析

实际用户:表示你是谁,谁运行起来,用于标识信息eg:身份证,邀请函身份,非会员

有效用户:对某种资源是否具有某种权限,进程可能访问某些资源,普通用户不忍,身份变更才可访问资源

例如:在Linux系统下,root用户或普通用户都可以使用passwd命令来修改密码,修改密码主要通过修改etc文件来实现,而shadow文件权限全空,只有root有权限修改此文件。故当普通用户执行passwd命令时,它的权限在一瞬间得到提升,运行时以拥有者权限运行。

猜测运行结果,会打印几条消息??

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
        int i=0;
        pid_t id;
        for(;i<2;++i)
        {
                id=fork();
                if(id==0){//child
                        printf("pid: %d,ppid: %d\n",getpid(),getppid());
                }
                else if(id>0){//father
                        printf("pid: %d,ppid: %d\n",getpid(),getppid());
                }
        }
        return 0;
}

运行结果显示:用fork()创建子进程后执行的是和父进程相同的程序(但可能执行不同的代码分支:if条件判断分流)

后面的ppid为1显示他们变成了孤儿进程,被1号进程领养。

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
        int i=0;
        pid_t id;
        for(;i<2;++i)
        {
                id=fork();
                if(id==0){//child
                        printf("pid: %d,ppid: %d\n",getpid(),getppid());
                }
                else if(id>0){//father
                        printf("pid: %d,ppid: %d\n",getpid(),getppid());
                }
        }
        printf("pid: %dHello\n",getpid());
        return 0;
}

时间: 2024-10-12 10:59:46

Linux下进程创建分析的相关文章

【网络编程基础】Linux下进程通信方式(共享内存,管道,消息队列,Socket)

在网络课程中,有讲到Socket编程,对于tcp讲解的环节,为了加深理解,自己写了Linux下进程Socket通信,在学习的过程中,又接触到了其它的几种方式.记录一下. 管道通信(匿名,有名) 管道通信,在一个进程之中,只能单一的对其写或者是读,而不可以及执行写操作又执行读操作.这一点,我们可以将其想象成我们的水管,分别连着不同的两端,在有水流的时候,一端只能进行输入,另一端只能进行输出,而不可以同时输入和输出. 管道又分为有名管道和匿名管道,两者的区别在于对于匿名管道,其只能在具有亲缘关系的父

Linux下进程线程,Nignx与php-fpm的进程线程方式

1.进程与线程区别 进程是程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集.从内核的观点看,进程的目的就是担当分配系统资源(CPU时间.内存等)的基本单位. 线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源. "进程——资源分配的最小单位,线程——程序执行的最小单位" 进程有独立的地

Linux下进程间Socket通信调试debug方法

在一个复杂的软件系统中,往往需要有各个组件之间的数据传递,在组件间数据传递过程中,又会不可避免的出现一些小问题,这时候我们就需要来进行debug了,由于最近的一个系统使用到了collectd和rrdcached来收集数据和画图,它们之间采用了Unix socket通信,因此小小的学习了一下相关知识. 首先我们来回忆下Linux下进程通信有哪些方法: 管道(Pipe)及有名管道(FIFO)\UNIX BSD 信号(Signal) \UNIX BSD 报文消息队列(Message)\UNIX sys

Linux下apache日志分析与状态查看方法

假设apache日志格式为:118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Public/Css/index.css HTTP/1.1″ 304 – “http://www.a.cn/common/index.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.3)” 问题1:在apachelog中找出访问次数最多的10个IP.awk '{print $1}

linux下编译原理分析

linux下编译hello.c 程序,使用gcc hello.c,然后./a.out就可以运行:在这个简单的命令后面隐藏了许多复杂的过程,这个过程包括了下面的步骤: ====================================================================================== 预处理: 宏定义展开,所有的#define 在这个阶段都会被展开 预编译命令的处理,包括#if #ifdef 一类的命令 展开#include 的文件,像上面h

Linux 下 apache 日志分析与状态查看[转]

假设apache日志格式为: 118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Public/Css/index.css HTTP/1.1″ 304 – “http://www.a.cn/common/index.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; GTB6.3)” 问题1:在apachelog中找出访问次数最多的10个IP. awk '{print $

Linux 下进程与线程的基本概念

2019-10-01 关键字:进程.线程.信号量.互斥锁 什么是程序? 程序就是存放在磁盘上的指令和数据的有序集合,就是源代码编译产物. 它是静态的. 什么是进程? 进程就是操作系统为执行某个程序所分配的资源的总称.进程是程序的一次执行过程,因此它与程序不同,它是动态的.它的生命周期包括创建.调度.执行和消亡. 进程的内容主要包括以下三个部分: 1.正文段: 2.用户数据段: 3.系统数据段. 其中正文段与用户数据段两部分是从程序当中来的.而系统数据段则是操作系统分配的用来管理这个进程用的. 系

Linux下如何创建新用户

Linux下如何创建新用户 Linux系统中,只有root用户有创建其他用户的权限.创建过程如下:   useradd -d /home/newuser newuser(设定了该用户的主目录和用户名)   useradd -d /home/newuser -g 0 -G 0,1,3,4,6,10 -u 500 -r -p Love newuser(指定了用户的组id以及一系列的所属组的id,用户id,密码等) 为用户显式设定密码 命令为passwd username:    [[email pr

Linux下进程管理工具之(二):htop

实验环境: CentOS release 6.6(Final)  一台 IP地址:172.16.249.230 Htop是一款运行于Linux系统监控与进程管理软件,用于取代Unix下传统的top.与top只提供最消耗资源的进程列表不同,htop提供所有进程的列表,并且使用彩色标识出处理器.swap和内存状态. 用户一般可以在top无法提供详尽系统信息的情况下选择安装并使用htop.比如,在查找应用程序的内存泄漏问题时.与top相比,htop提供更方便.光标控制的界面来杀死进程. htop用C语