Linux程式介面實驗 取程序標誌及使用者資訊

2021-09-21 20:10:59 字數 4069 閱讀 4889

作業系統平台:

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

intmain(intargc,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個程序併發執行的程序排程模擬程式。程序排程演算法 採用最高優先順序優先的排...