系統程式設計(二)

2021-07-30 00:23:10 字數 2391 閱讀 6310

系統程式設計基礎(二)

#include 

int access(const

char *pathname, int mode);

/*pathname檔名或絕對路徑檔名

mode:

f_ok判斷檔案是否存在

r_ok是否可讀

w_ok是否可寫

x_ok是否可執行

返回值成功返回0,錯誤返回-1

*/

#include 

#include

#include

int stat(const

char *path, struct stat *buf);

int fstat(int fd, struct stat *buf);

int lstat(const

char *path, struct stat *buf);

返回值成功返回0,出錯返回-1

struct stat

; /*

s_isreg(m) is it a regular file?是否是普通檔案?

s_isdir(m) directory? 目錄?

s_ischr(m) character device? 字元裝置?

s_isblk(m) block device? 塊裝置?

s_isfifo(m) fifo? 管道?

s_islnk(m) symbolic link? 鏈結檔案?

s_issock(m) socket? socket?

s_ifmt 0170000 檔案型別的位掩碼

s_ifmt & buf.st_mode

s_ifsock 0140000 socket

s_iflnk 0120000 鏈結檔案

s_ifreg 0100000 規則檔案

s_ifblk 0060000 塊裝置檔案

s_ifdir 0040000 目錄

s_ifchr 0020000 字元裝置檔案

s_ififo 0010000 管道

*/

//①opendir()

#include

#include

dir *opendir(const

char *name);

//②readdir()

#include

struct dirent *readdir(dir *dirp);

struct dirent

;//③closedir()

#include

#include

int closedir(dir *dirp);

//①getpwuid使用者id

#include

#include

struct passwd *getpwuid(uid_t uid);

char *pw_name;

struct passwd

;//②getgrgid使用者所屬組id

#include

#include

struct group *getgrgid(gid_t gid);

char *gr_name;

struct group

;//③localtime

#include

struct tm *localtime(const time_t *timep);

struct tm

;//④readlink鍊錶的鏈結的源檔名

#include

ssize_t readlink(const

char *path, char *buf, size_t bufsiz);

//path鏈結檔名

//buf源檔名

#include 

pid_t fork(void);

fork()呼叫一次有兩個返回值,父程序返回的是子

程序的pid,子程序返回是0,出錯時返回值小於0

為什麼父程序返回值是子程序的pid?

因為子程序是父程序生成的,父程序需要管理子程序,

沒有直接獲取子程序的pid函式需要知道子程序的pid號

為什麼子程序返回值是0?

因為子程序本身的pid可以通過函式getpid()獲取

沒有直接獲取子程序的pid的函式

getpid()//獲取自己的pid號

getppid()//獲取父程序的pid號

Linux系統程式設計(二)

複習檔案描述符 指向結構體的指標 exec函式族 fork建立子程序後執行的是和父程序相同的程式 但是有可能執行不同的 分支 子程序往往要呼叫一種exec函式以執行另外乙個程式,當程序呼叫一種exec函式時,該程序的使用者空間 和資料完全被新程式替代,從新程式的啟動例程開始執行,呼叫exec並不建立...

系統程式設計之檔案系統程式設計

系統呼叫 所有的作業系統都提供多種服務的入口點,程式由此向核心請求服務。這些可直接進入核心的入口點被稱為系統呼叫。不同作業系統提供了自己的一套系統呼叫,所以系統呼叫無法實現跨平台使用。而且頻繁地系統呼叫,在使用者態和核心態之間切換,很耗費資源,效率不高。c標準庫提供了操作檔案的標準i o函式庫,與系...

Linux系統程式設計 執行緒函式(二)

今天我們編寫乙個程式來實現執行緒有關的函式 本程式使用了下兩個執行緒相關的函式 1 pthread join函式 2 pthread detach函式 這兩個函式的詳細用法在前面的部落格中介紹過了,這裡就不介紹了。實現 include include include include include ...