基本上所有的系統調用成功時返回0或正數,失敗時返回負值。
進程的使用者標誌號管理
系統調用的格式
#include <unistd.h>
unsigned short getuid()
unsigned short getgid()
unsigned short geteuid()
unsigned short getegid()
int setuid(int uid)
int setgid(int gid)
int seteuid(int euid)
int setegid(int egid)
參數與功能說明:
前四個系統調用返回進程的實際使用者標誌號,有效使用者標誌號,實際使用者組標誌號和有效組標誌號。 這些調用總能成功。 setuid和setgid用於設置進程的實際使用者(組)標誌號和有效使用者(組)標誌號。 如果調用進程的有效使用者標誌號是超級使用者標誌號,則將調用進程的實際使用者(組)標誌號和有效使用者(組)標誌號設為uid和gid;如果調用進程的有效使用者標誌號不是超級使用者標誌號,但他的實際使用者(組)標誌號為uid(gid)時, 則其有效使用者(組)標誌號設為uid或gid。 如果調用進程的有效使用者標誌號不是超級使用者標誌號,且他的實際使用者(組)標誌號不為uid(gid)時,則調用失敗。 Seteuid和setegid與setuid,setgid類似,只不過只對有效使用者(組)標誌號起作用。
進程標誌號管理
系統調用的格式
#include <sys/types.h>
#include <unistd.h>
int getpid()
int getpgrp()
int getppid()
int setpgrp()
int setsid()
參數與功能說明:
前三個系統調用分別返回進程的進程標誌號,進程組標誌號和其父進程標誌號。 他們總能成功返回。 第四,五個調用設置進程組標誌號,他將調用進程的進程組標誌號改為調用進程的進程標誌號,使其成為進程組首進程,並返回這一新的進程組標誌號。
信號機構
signal系統調用的格式
#include <signal.h>
void (*signal(sig,func))()
int sig; /*信號值 */
void (*func)(); /*信號處理方式*/
參數與功能說明:
按函數func的定義設置調用進程對信號sig的處理方式。 執行成功時,返回調用進程先前對信號sig處理方式的值,失敗時返回-1。 參數func的取值為SIG_DFL,SIG_IGN或使用者信號處理函數位址,分別表示缺省方式,或略方式和捕獲方式。
sig的取值有(重要的列出)
SIGHUP 掛起。 當終端掛起時,該信號發送到和該終端相關的所有進程。 當進程組中的首進程因某種原因中斷時,也向該組的每個進程發送該信號
SIGINT 中斷。 當敲擊中斷鍵時該信號發送到和該終端相關的所有進程
SIGQUIT 退出。 當敲擊(ctrl+\)鍵時該信號發送到和該終端相關的所有進程
SIGKILL 殺死。 殺死進程的信號,他不能被ignore
SIGSEGV 段違例
SIGPIPE 寫管道錯。 當進程向一個沒有任何讀進程的管道寫資料時,發送該信號
SIGALRM 報警時鐘。
SIGTERM 軟體終止信號
SIGUSR1 自訂信號
SIGUSR2 自訂信號
SIGCLD 子進程消亡。 當子進程因某種原因而消亡時,它向父進程發送該信號。
SIGURG 緊急的套介面條件
SIGPOLL 在一條流上發生了使用者指定的事件時,流控制機制發送該信號到使用者進程