国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

Linux程序設計入門 系統進程的詳細介紹1
2007-08-16   網絡

1、進程的概念

Linux操作系統是面向多用戶的.在同一時間可以有許多用戶向操作系統發出各種命令.那么操作系統是怎么實現多用戶的環境呢? 在現代的操作系統里面,都有程序和進程的概念.那么什么是程序,什么是進程呢? 通俗的講程序是一個包含可以執行代碼的文件,是一個靜態的文件.而進程是一個開始執行但是還沒有結束的程序的實例.就是可執行文件的具體實現. 一個程序可能有許多進程,而每一個進程又可以有許多子進程.依次循環下去,而產生子孫進程. 當程序被系統調用到內存以后,系統會給程序分配一定的資源(內存,設備等等)然后進行一系列的復雜操作,使程序變成進程以供系統調用.在系統里面只

有進程沒有程序,為了區分各個不同的進程,系統給每一個進程分配了一個ID(就象我們的身份證)以便識別. 為了充分的利用資源,系統還對進程區分了不同的狀態.將進程分為新建,運行,阻塞,就緒和完成五個狀態. 新建表示進程正在被創建,運行是進程正在運行,阻塞是進程正在等待某一個事件發生,就緒是表示系統正在等待CPU來執行命令,而完成表示進程已經結束了系統正在回收資源. 關于進程五個狀態的詳細解說我們可以看《操作系統》上面有詳細的解說。

2、進程的標志

上面我們知道了進程都有一個ID,那么我們怎么得到進程的ID呢?系統調用getpid可以得到進程的ID,而getppid可以得到父進程(創建調用該函數進程的進程)的ID.

#include <unistd> 
pid_t getpid(void); 
            pid_t getppid(void);

進程是為程序服務的,而程序是為了用戶服務的.系統為了找到進程的用戶名,還為進程和用戶建立聯系.這個用戶稱為進程的所有者.相應的每一個用戶也有一個用戶ID.通過系統調用getuid可以得到進程的所有者的ID.由于進程要用到一些資源,而Linux對系統資源是進行保護的,為了獲取一定資源進程還有一個有效用戶ID.這個ID和系統的資源使用有關,涉及到進程的權限. 通過系統調用geteuid我們可以得到進程的有效用戶ID. 和用戶ID相對應進程還有一個組ID和有效組ID系統調用getgid和getegid可以分別得到組ID和有效組ID。

#include <unistd> 
#include <sys/types.h> 
uid_t getuid(void); 
uid_t geteuid(void); 
gid_t getgid(void); 
            git_t getegid(void);

有時候我們還會對用戶的其他信息感興趣(登錄名等等),這個時候我們可以調用getpwui

d來得到。

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 */ 
}; 
#include <pwd.h> 
#include <sys/types.h> 
            struct passwd *getpwuid(uid_t uid);

下面我們學習一個實例來實踐一下上面我們所學習的幾個函數:

#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(); 
parent_pid=getppid(); 
my_uid=getuid(); 
my_euid=geteuid(); 
my_gid=getgid(); 
my_egid=getegid(); 
my_info=getpwuid(my_uid); 
printf("Process ID:%ld ",my_pid); 
printf("Parent ID:%ld ",parent_pid); 
printf("User ID:%ld ",my_uid); 
printf("Effective User ID:%ld ",my_euid); 
printf("Group ID:%ld ",my_gid); 
printf("Effective Group ID:%ld ",my_egid): 
if(my_info) 
{ 
printf("My Login Name:%s " ,my_info->pw_name); 
printf("My Password :%s " ,my_info->pw_passwd); 
printf("My User ID :%ld ",my_info->pw_uid); 
printf("My Group ID :%ld ",my_info->pw_gid); 
printf("My Real Name:%s " ,my_info->pw_gecos); 
printf("My Home Dir :%s ", my_info->pw_dir); 
printf("My Work Shell:%s ", my_info->pw_shell); 
} 
            }

3、進程的創建

創建一個進程的系統調用很簡單.我們只要調用fork函數就可以了.

#include <unistd.h> 
            pid_t fork();

當一個進程調用了fork以后,系統會創建一個子進程.這個子進程和父進程不同的地方只有他的進程ID和父進程ID,其他的都是一樣.就象符進程克隆(clone)自己一樣.當然創建兩個一模一樣的進程是沒有意義的.為了區分父進程和子進程,我們必須跟蹤fork的返回值. 當fork掉用失敗的時候(內存不足或者是用戶的最大進程數已到)fork返回-1,否則fork的返回值有重要的作用.對于父進程fork返回子進程的ID,而對于fork子進程返回0.我們就是根據這個返回值來區分父子進程的. 父進程為什么要創建子進程呢?前面我們已經說過了Linux是一個多用戶操作系統,在同一時間會有許多的用戶在爭奪系統的資源.有時進程為了早一點完成任務就創建子進程來爭奪資源. 一旦子進程被創建,父子進程一起從fork處繼續執行,相互競爭系統的資源.有時候我們希望子進程繼續執行,而父進程阻塞直到子進程完成任務.這個時候我們可以調用wait或者waitpid系統調用.

#include <sys/types.h> 
#include <sys/wait.h> 
pid_t wait(int *stat_loc); 
            pid_t waitpid(pid_t pid,int *stat_loc,int options);

熱詞搜索:

上一篇:安裝Vista不輸入序列號 奧妙在于“否”
下一篇:Linux程序設計入門 系統進程的詳細介紹2

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
狠狠久久亚洲欧美| www.综合网.com| 99久久er热在这里只有精品66| 色综合久久久久综合体桃花网| 欧美片网站yy| 最近中文字幕一区二区三区| 蜜桃视频在线观看一区二区| 在线视频中文字幕一区二区| 欧美国产一区在线| 国产真实精品久久二三区| 欧美精品日韩综合在线| 亚洲另类一区二区| av亚洲精华国产精华| 精品国产91乱码一区二区三区| 亚洲国产一区二区视频| 93久久精品日日躁夜夜躁欧美| 日韩三级.com| 亚洲成人免费观看| 色综合久久综合网欧美综合网| 欧美一区二区免费视频| 亚洲va欧美va天堂v国产综合| 国产精品一区二区三区网站| 欧美男男青年gay1069videost| 国产精品视频你懂的| 久久99精品国产麻豆不卡| 欧美一区二区三级| 艳妇臀荡乳欲伦亚洲一区| 91麻豆成人久久精品二区三区| 欧美成人精品福利| 久久国产精品99久久人人澡| 欧美在线视频不卡| 久久久久99精品国产片| 免费成人在线播放| 欧美日韩一区二区三区在线| 亚洲午夜久久久久| 99久久久久免费精品国产| 中文字幕日韩一区| 国产成+人+日韩+欧美+亚洲| 久久久国产精品麻豆| 精品一区二区三区不卡 | 国产精品久久久久久久久久免费看 | 亚洲精品视频在线观看网站| 99久久精品国产精品久久| 国产午夜三级一区二区三| 成人精品视频.| 国产日韩精品一区二区三区 | 欧美国产成人精品| 亚洲一区二区三区视频在线 | 欧美成人精品二区三区99精品| 亚洲h动漫在线| 欧美成人性福生活免费看| 日韩av一区二区三区| 精品理论电影在线观看| 极品美女销魂一区二区三区| 欧美在线高清视频| 欧美a一区二区| 精品国产免费一区二区三区香蕉| 粗大黑人巨茎大战欧美成人| 国产日韩精品一区二区三区在线| 一本久久综合亚洲鲁鲁五月天 | 欧美一区二区人人喊爽| 免费成人av在线| 中文字幕一区二区三中文字幕| 成人免费福利片| 亚洲福中文字幕伊人影院| 欧美夫妻性生活| 成人午夜视频网站| 亚洲综合一区二区精品导航| 欧美中文字幕久久| 久久爱另类一区二区小说| 在线播放亚洲一区| 成人精品在线视频观看| 亚洲日本在线视频观看| 精品精品欲导航| 国产suv精品一区二区883| 亚洲国产精品久久久男人的天堂| 在线成人av影院| 成人动漫中文字幕| 偷拍自拍另类欧美| 欧美综合欧美视频| 国产成人在线视频网址| 日韩一区欧美一区| 精品美女一区二区三区| 成人a区在线观看| 麻豆一区二区三区| 中文字幕一区二区日韩精品绯色| 欧美一区二区三区人| 国产.欧美.日韩| 日本最新不卡在线| 中文字幕日韩精品一区| 欧美综合亚洲图片综合区| 成人午夜免费电影| 热久久一区二区| 亚洲一区二区美女| 国产日韩欧美在线一区| 91精品一区二区三区久久久久久| 粉嫩av一区二区三区| 激情av综合网| 亚洲线精品一区二区三区| 综合色天天鬼久久鬼色| 日韩免费视频一区| 色综合视频在线观看| 国产伦精一区二区三区| 亚洲图片激情小说| 中文字幕欧美一| 2020国产精品| 26uuu久久天堂性欧美| 在线看国产一区| 色综合久久综合| 从欧美一区二区三区| 粉嫩一区二区三区在线看| 免费在线成人网| 精品无人码麻豆乱码1区2区 | 国产馆精品极品| 午夜视频在线观看一区二区| 亚洲影院久久精品| 中文字幕一区二区三区在线播放| 欧美高清一级片在线观看| 欧美本精品男人aⅴ天堂| 欧美一级片在线看| 欧美情侣在线播放| 欧美丰满少妇xxxxx高潮对白| 色菇凉天天综合网| 国产精品一二三四五| 久久电影网电视剧免费观看| 亚洲综合在线五月| 日精品一区二区三区| 亚洲一区二区三区不卡国产欧美| 午夜av电影一区| 亚洲国产cao| 五月婷婷激情综合网| 国产精品卡一卡二| 国产网红主播福利一区二区| 国产校园另类小说区| 欧美一区二区三区四区在线观看| 91麻豆精品国产91久久久资源速度 | 国产日韩欧美在线一区| 久久先锋影音av| 国产女主播在线一区二区| 久久免费的精品国产v∧| 欧美色图片你懂的| 69成人精品免费视频| 678五月天丁香亚洲综合网| 久久综合国产精品| 国产亚洲精品资源在线26u| 亚洲手机成人高清视频| 亚洲综合在线视频| 国产自产v一区二区三区c| 国产又粗又猛又爽又黄91精品| 成人动漫一区二区三区| 91小视频在线观看| 精品国产伦一区二区三区观看方式 | 一区二区三区日韩| 午夜精品久久久久久| 激情国产一区二区 | 精品欧美一区二区在线观看| 国产亚洲一二三区| 国产精品久久久久久久久免费樱桃 | 日韩西西人体444www| 国产调教视频一区| 亚洲精品水蜜桃| 激情都市一区二区| 色综合视频在线观看| 久久日一线二线三线suv| 欧美激情综合在线| 免费精品视频最新在线| 成人自拍视频在线| 欧美成人女星排行榜| 中文字幕一区二区三| 精品一区二区三区的国产在线播放| 懂色av一区二区三区免费观看| 欧美精三区欧美精三区| 精品福利一二区| 视频在线在亚洲| 成人中文字幕在线| 久久这里都是精品| 亚洲欧美色图小说| 成人免费毛片嘿嘿连载视频| 欧美日韩在线播放三区| 亚洲天堂久久久久久久| 免费不卡在线观看| 欧美久久久久中文字幕| 中文字幕第一页久久| 国产美女娇喘av呻吟久久| 在线观看成人免费视频| 亚洲视频免费观看| 国产精品主播直播| 精品女同一区二区| 午夜精品久久久久久久| 欧美性色欧美a在线播放| 国产日本亚洲高清| 国产精品99久久久久久久女警| 欧美视频在线不卡| 亚洲成人av资源| 97精品久久久午夜一区二区三区| 精品国产亚洲在线| 丝袜国产日韩另类美女| 成人激情动漫在线观看| 国产精品嫩草99a| 成人黄色大片在线观看|