linux学习笔记进程——进程的标志

1.进程的概念

Linux 操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命
令.那么操作系统是怎么实现多用户的环境呢? 在现代的操作系统里面,都有程序和进程
的概念.那么什么是程序,什么是进程呢?
1.通俗的讲程序是一个包含可以执行代码的文件
,是一个静态的文件.而进程是一个开始执行但是还没有结束的程序的实例.就是可执行文件的具体实现.
2.一个程序可能有许多进程,而每一个进程又可以有许多子进程.依次循环下去,而产生子孙进程. 当程序被系统调用到内存以后,系统会给程序分配一定的资源(内存,设备等等)然后进行一系列的复杂操作,使程序变成进程以供系统调用.在系统里面只有进程没有程序,为了区分各个不同的进程,系统给每一个进程分配了一个ID(就象我们的身份证)以便识别.
3. 为了充分的利用资源,系统还对进程区分了不同的状态.将进程分为新建,运行,阻塞,就绪和完成 五个状态. 新建表示进程正在被创建,运行是进程正在运行,阻
塞是进程正在等待某一个事件发生,就绪是表示系统正在等待CPU来执行命令,而完成表示
进程已经结束了系统正在回收资源.

2.进程的标志

(程序里有讲解)

#include <unistd.h> 
#include <pwd.h>
#include <sys/types.h>
#include <stdio.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();//进程的ID
parent_pid=getppid();//父进程的ID 
my_uid=getuid();//用户ID
/*
进程是为程序服务的,而程序是为了用户服务的.系统为了找到进程的用户名,还为进程和
用户建立联系.这个用户称为进程的所有者.相应的每一个用户也有一个用户ID.通过系统
调用getuid可以得到进程的所有者的ID.
*/
my_euid=geteuid();//有效用户ID
/*
由于进程要用到一些资源,而Linux对系统资源是
进行保护的,为了获取一定资源进程还有一个有效用户ID.这个ID和系统的资源使用有关
,涉及到进程的权限.  通过系统调用geteuid我们可以得到进程的有效用户ID.
*/
my_gid=getgid();//组ID
my_egid=getegid();//有效ID
/*
和用户ID 
相对应进程还有一个组ID和有效组ID系统调用getgid和getegid可以分别得到组ID和有效
组ID 
*/
my_info=getpwuid(my_uid);//有时候我们还会对用户的其他信息感兴趣(登录名等等),这个时候我们可以调用getpwuid来得到.
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);
    }
} 
/*
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 
}; 
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值