作業系統平台:
linux leaf 4.4.0-75-generic #96-ubuntu smp thu apr 20 09:56:33 utc 2017 x86_64 x86_64 x86_64 gnu/linux
相關工具語言:vim,gcc,c語言
1.程式源**
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
xpleaf@leaf:~/operation/1$ cat pflag.c
#include
#include
#include
#include
int
main(
int
argc,
char
**ar**)
}
2.程式編譯與執行
編譯:1
xpleaf@leaf:~
/operation/1
$ gcc pflag.c -o pflag
編譯後會生成pflag程式,執行該程式(為了方便後面的結果分析,執行兩次):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
xpleaf@leaf:~
/operation/1
$ .
/pflag
process id:12628
parent id:10136
user id:1000
effective user id:1000
group id:1000
effective group id:1000
my login name:xpleaf
my password:x
my user id:1000
my group id:1000
my real name:xpleaf,,,
my home dir:
/home/xpleaf
my work shell:
/bin/bash
xpleaf@leaf:~
/operation/1
$
xpleaf@leaf:~
/operation/1
$ .
/pflag
process id:12695
parent id:10136
user id:1000
effective user id:1000
group id:1000
effective group id:1000
my login name:xpleaf
my password:x
my user id:1000
my group id:1000
my real name:xpleaf,,,
my home dir:
/home/xpleaf
my work shell:
/bin/bash
3.結果分析
(1)程序標誌
因為pflag程式的兩次執行都是在同一shell程序下完成的,所以顯然輸出的parent id都是一致的,但是每次程式執行完成後,相應的程式程序也會結束,所以兩次程式執行的process id都是不一樣的。
(2)使用者資訊
使用了兩種方式去獲取使用者資訊,一種是直接取單獨的使用者資訊,如取user id,直接呼叫函式庫中的函式getuid()函式;而另外一種則是通過建立passwd結構體的例項my_info來直接獲取所有的相關使用者資訊。
分析上面的結果,再與linux作業系統上的/etc/passwd上本使用者的資訊進行比對:
1
2
3
4
5
xpleaf@leaf:~
/operation/1
$
grep
'xpleaf'
/etc/passwd
xpleaf:x:1000:1000:xpleaf,,,:
/home/xpleaf
:
/bin/bash
# 輸出依次為
# 使用者名稱:使用者密碼(不使用,用x代替):使用者id:使用者組id:使用者真實姓名:使用者家目錄:使用者shell
可以發現,通過系統呼叫的方式來獲取這些引數,與linux作業系統/etc/passwd檔案記錄的資訊內容是一致的。
4.參考資料
《作業系統原理與linux實踐教程》p19 實驗2linux程式介面實驗
Linux應用程式開 程序管理(實驗)
要求 編寫程式實現程序的管道通訊。使用系統呼叫pipe 建立乙個管道,二個子程序p1和p2分別向管道各寫一句話 child 1 is sending a message child 2 is sending a message 父程序從管道中讀出二個來自子程序的資訊並顯示 要求先接收p1,再接收p2...
實驗三 程序排程模擬程式實驗
1.1.實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。1.2.實驗要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排程演算法 即把處理機分配給優先順序最高的程序 和先來先服務 若優先順序相同 演算法。1...
實驗三 程序排程模擬程式
實驗三 程序排程模擬程式 專業 商軟2班 姓名 郭明茵 學號 201406114204 一 實驗目的 用高階語言完成乙個程序排程程式,以加深對程序的概念及程序排程演算法的理解。二 實驗內容和要求 1.2.1例題 設計乙個有 n個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排...