系統程式設計基礎(二)
#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 ...