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);
}
分享到:
相关推荐
【linux学习笔记-10】Linux进程相关系统调用(三).doc 【linux学习笔记-11】守护进程daemon.doc 【linux学习笔记-12】守护进程的日志实现.doc 【linux学习笔记-13】基本进程通信--文件锁.doc 【linux学习笔记-14】...
【linux学习笔记-7】用户标识UID与有效用户标识EUID 【linux学习笔记-8】Linux进程相关系统调用(1) 【linux学习笔记-9】Linux进程相关系统调用(2) 【linux学习笔记-10】Linux进程相关系统调用(3) 【linux学习...
armlinux学习笔记--IIS音频驱动程序分析
ARM linux学习笔记--IIS音频驱动程序分析整理
认真学习的人从国内某个培训机构上课时,记录的C语言学习笔记,其中包含所有的C语言基本语法,文章中对指针、字符操作有好多介绍,整理的很全面,并且有图示哦!! 相信对大家学习C语言会有很大帮助!!!
Python学习笔记--皮大庆,非常适合零基础入门。对应英文版本《How to think like a computer scientist》
c语言学习笔记-简易版扫雷
写得蛮好的linux学习笔记--linux目录架构
linux内核移植 笔记--移植指令 linux内核移植 笔记--移植指令 linux内核移植 笔记--移植指令
C语言学习笔记-详细而全面的基础教程.pdf
Linux课程学习笔记 -韩顺平 包含c/c++/python/java 专项 面试题 PDF PPT 笔记 面试题 (百度网盘链接 永久有效) 自学,做笔记,复习可用
JXW的C语言学习笔记-待查
armlinux学习笔记--触摸屏驱动程序分析.pdf
Linux学习笔记Linux学习笔记Linux学习笔记Linux学习笔记
linux学习笔记-01linux操作基础
找到的一篇写的很好的linux学习笔记 不敢独享 大家有兴趣的就下下
Linux学习笔记-超全总结值得一看(带标签目录),共154页。
armlinux学习笔记--IIS音频驱动程序分析(2).pdf
armlinux学习笔记--IIS音频驱动程序分析(2)资料.pdf
Linux学习笔记-很不错适合linux入门者