`

linux c学习笔记----进程的概念与标志

阅读更多

1.进程的概念

 

(1)通俗的讲程序是一个包含可以执行代码的文件,是一个静态的文件.而进程是一个开始执行但是还没有结束的程序的实例.就是可执行文件的具体实现. 一个程序可能有许多进程,而每一个进程又可以有许多子进程.依次循环

下去,而产生子孙进程。

(2)当程序被系统调用到内存以后,系统会给程序分配一定的资源(内存,设备等等)然后进行一系列的复杂操作,使程序变成进程以供系统调用.在系统里面只有进程没有程序,为了区分各个不同的进程,系统给每一个进程分配了一个ID(就象我们的

身份证)以便识别。

(3)为了充分的利用资源,系统还对进程区分了不同的状态.将进程分为新建,运行,阻塞,就绪和完成五个状态. 新建表示进程正在被创建,运行是进程正在运行,阻塞是进程正在等待某一个事件发生,就绪是表示系统正在等待CPU 来执行命令,而完成表示

进程已经结束了系统正在回收资源.

 

2.进程的标志

pid_t getpid(void) 得到进程的ID

pid_t getppid(void) 得到父进程(创建调用该函数进程的进程)的ID

uid_t getuid(void) 得到进程的所有者的ID

uid_t geteuid(void) 得到进程的有效用户ID 

gid_t getgid(void) 得到所有者的组ID

git_t getegid(void) 得到有效组ID


调用getpwuid来得到用户的其他信息:


struct passwd {

char *pw_name; /* 登录名称 */

char *pw_passwd; /* 登录口令 */

uid_t pw_uid; /* 用户ID */

gid_t pw_gid; /* 用户组ID */

char *pw_gecos; /* 用户的真名 */

char *pw_dir; /* 用户的目录 */

char *pw_shell; /* 用户的SHELL */

};

实例代码:

 

/* 
 * File:   unistd.c
 * Author: RobertLuo
 *
 * Created on 2012年10月22日, 下午2:22
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>

/*
 * 
 */
int main(int argc, char** argv) {
    pid_t my_pid, parent_pid;
    uid_t my_uid, my_euid;
    gid_t my_gid, my_egid;
    struct passwd *my_info;
    my_pid = getpid();
    parent_pid = getppid();
    my_uid = getuid();
    my_euid = geteuid();
    my_gid = getgid();
    my_egid = getegid();
    my_info = getpwuid(my_uid);
    printf("Process ID:%ld\n", my_pid);
    printf("Parent ID:%ld\n", parent_pid);
    printf("User ID:%ld\n", my_uid);
    printf("Effective User ID:%ld\n", my_euid);
    printf("Group ID:%ld\n", my_gid);
    printf("Effective Group ID:%ld\n", my_egid);
    if (my_info){
        printf("My Login Name:%s\n", my_info-> pw_name);
        printf("My Password :%s\n", my_info-> pw_passwd);
        printf("My User ID :%ld\n", my_info-> pw_uid);
        printf("My Group ID :%ld\n", my_info-> pw_gid);
        printf("My Real Name:%s\n", my_info-> pw_gecos);
    }
    printf("My Home Dir :%s\n", my_info->pw_dir);
    printf("My Work Shell:%s\n", my_info-> pw_shell);
    return (EXIT_SUCCESS);
}
 

 

分享到:
评论

相关推荐

    armlinux学习笔记--IIS音频驱动程序详解

    总的来说,armlinux平台上的IIS音频驱动程序涉及到音频硬件的初始化、数据缓冲区的管理和DMA传输,以及与用户空间交互的接口。通过理解这些核心概念,开发者可以有效地调试和定制音频驱动,以满足特定硬件和应用需求...

    Linux_C编程一站式学习_最终版__带目录的pdf更方便查找与做笔记

    以上是对《Linux_C编程一站式学习》的部分内容进行的详细总结,涵盖了从C语言基础到高级主题的广泛内容。这些知识点为读者提供了全面而深入的学习资源,有助于读者系统地掌握C语言及其在Linux环境下的应用。

    嵌入式Linux笔记

    【嵌入式Linux笔记】是一份详尽的Linux学习资料,涵盖了从基础概念到实际操作的多个方面。这篇笔记特别适合Linux初学者作为入门指南。笔记主要知识点包括: 1. **Linux硬盘分区**:Linux硬盘分区有主分区、扩展分区...

    Linux网络编程笔记(修订版)

    ### Linux网络编程笔记(修订版) #### 基本概念 ...通过以上内容的学习和实践,可以更加深入地理解Linux网络编程的基本概念、常用接口以及常见的服务器模型,并能够编写出稳定高效的网络应用程序。

    APUE读书笔记(Unix高级环境编程)

    - **程序与进程**:探讨进程的概念、进程的生命周期、进程的状态变化以及进程间的父子关系。 - **程序线程**:介绍线程的基本概念、线程与进程的区别、线程的创建与管理。 - **异步、并发、通信**:讲解异步处理机制...

    LINUX与UNIX%20SHELL编程指南

    《LINUX与UNIX SHELL编程指南》是一本深入讲解Linux和UNIX Shell编程的经典书籍,作者张启峰在读书笔记中不仅归纳总结了书中的核心概念,还提供了丰富的实践示例,旨在帮助读者全面掌握Shell编程技能。以下是根据...

    liunx中的消息队列学笔记。

    ### Linux中的消息队列学习笔记 #### 消息队列概念 消息队列是一种进程间通信方式,允许发送包含一定格式的数据消息。消息队列中的消息由消息类型和消息文本组成,消息类型是一个整数值,它用于区分不同类型的事件...

    Linux API速查手册.zip

    这份Linux API速查手册涵盖了以上所有内容,无论你是初学者还是经验丰富的开发者,都可以从中快速查找和学习相关知识,提升你的Linux编程技能。通过深入阅读和实践,你将能够更好地理解和驾驭Linux环境下的应用程序...

    libexpect开发

    - `expect lib for c编程学习记录.txt`:这个文件很可能是对LibExpect C语言接口的详细学习笔记,包括实例代码和使用经验分享,对于深入理解LibExpect的API和编程技巧会有很大帮助。 在实践中,掌握LibExpect的...

    TIL:我想记住的一些小东西

    标题 "TIL:我想记住的一些小东西" 暗示这是一个关于个人学习记录或技术笔记的集合,其中可能包含了各种编程语言和相关工具的小知识点。描述中的“瓷砖”可能指的是某种编程概念或项目组织方式,而“编译器标志”...

Global site tag (gtag.js) - Google Analytics