unix中的c函式

2021-06-10 18:02:21 字數 3222 閱讀 5164

1.realpath:char *realpath(src,dst)將src轉化為絕對路徑到dst,返回dst的指標

2、getopt:獲得命令列的引數,getopt(argc, argv, "ab:c:de::")

#includeint main(int argc,char **argv)

printf(「optopt +%c\n」,optopt);

}  執行 $./getopt –b

option b:b

執行 $./getopt –c

other option:c

執行 $./getopt –a

other option :?

執行 $./getopt –a12345

option a:』12345』

3、訊號量,

表頭檔案

#include

功 能:

設定某一訊號的對應動作

函式原型

:void (*signal(int signum,void(* handler)(int)))(int);

或者:typedef void(*sig_t) ( int );

sig_t signal(int signum,sig_t handler);

引數說明

:第乙個引數signum指明了所要處理的訊號型別,它可以取除了sigkill和sigstop外的任何一種訊號。

第二個引數handler描述了與訊號關聯的動作,它可以取以下三種值:

(1)乙個無返回值的函式位址

此函式必須在signal()被呼叫前申明,handler中為這個函式的名字。當接收到乙個型別為sig的訊號時,就執行handler 所指定的函式。這個函式應有如下形式的定義:

void func(int sig);

sig是傳遞給它的唯一引數。執行了signal()呼叫後,程序只要接收到型別為sig的訊號,不管其正在執行程式的哪一部分,就立即執行func()函式。當func()函式執行結束後,控制權返回程序被中斷的那一點繼續執行。

(2)sig_ign

這個符號表示忽略該訊號,執行了相應的signal()呼叫後,程序會忽略型別為sig的訊號。

(3)sigdfl

這個符號表示恢復系統對訊號的預設處理。

signaldescription

sigabrt

由呼叫abort函式產生,程序非正常退出

sigalrm

用alarm函式設定的timer超時或setitimer函式設定的interval timer超時

sigbus

某種特定的硬體異常,通常由記憶體訪問引起

sigcancel

由solaris thread library內部使用,通常不會使用

sigchld

程序terminate或stop的時候,sigchld會傳送給它的父程序。預設情況下該signal會被忽略

sigcont

當被stop的程序恢復執行的時候,自動傳送

sigemt

和實現相關的硬體異常

sigfpe

數學相關的異常,如被0除,浮點溢位,等等

sigfreeze

solaris專用,hiberate或者suspended時候傳送

sighup

傳送給具有terminal的controlling process,當terminal被disconnect時候傳送

sigill

非法指令異常

siginfo

bsd signal。由status key產生,通常是ctrl+t。傳送給所有foreground group的程序

sigint

由interrupt key產生,通常是ctrl+c或者delete。傳送給所有foreground group的程序

sigio

非同步io事件

sigiot

實現相關的硬體異常,一般對應sigabrt

sigkill

無法處理和忽略。中止某個程序

siglwp

由solaris thread libray內部使用

sigpipe

在reader中止之後寫pipe的時候傳送

sigpoll

當某個事件傳送給pollable device的時候傳送

sigprof

setitimer指定的profiling interval timer所產生

sigpwr

和系統相關。和ups相關。

sigquit

輸入quit key的時候(ctrl+\)傳送給所有foreground group的程序

sigsegv

非法記憶體訪問

sigstkflt

linux專用,數學協處理器的棧異常

sigstop

中止程序。無法處理和忽略。

sigsys

非法系統呼叫

sigterm

請求中止程序,kill命令預設傳送

sigthaw

solaris專用,從suspend恢復時候傳送

sigtrap

實現相關的硬體異常。一般是除錯異常

sigtstp

suspend key,一般是ctrl+z。傳送給所有foreground group的程序

sigttin

當background group的程序嘗試讀取terminal的時候傳送

sigttou

當background group的程序嘗試寫terminal的時候傳送

sigurg

當out-of-band data接收的時候可能傳送

sigusr1

使用者自定義signal 1

sigusr2

使用者自定義signal 2

sigvtalrm

setitimer函式設定的virtual interval timer超時的時候

sigwaiting

solaris thread library內部實現專用

sigwinch

當terminal的視窗大小改變的時候,傳送給foreground group的所有程序

sigxcpu

當cpu時間限制超時的時候

sigxfsz

程序超過檔案大小限制

sigxres

solaris專用,程序超過資源限制的時候傳送

UNIX時間函式

include time t time time t calptr 成功返回時間值,出錯返回 1 include struct timeval intgettimeofday struct timeval restrict tp,void restrict tzp 總是返回0某些平台支援用tzp說明...

Unix中的程序

1 程序id 每個程序都有乙個非負整數表示的唯一程序id。雖然是唯一的,但是程序id可以重用。大多數unix系統實現延遲重用演算法。程序id用pid t表示。一下兩個函式用來得到當前程序和父程序的pid。includepid t getpid get pid of current processs ...

unix 時間的相關函式

unix 的時間大致可分為實時的時間和結構體中的時間 計算 1900 到 1970 年之間的秒數 rfc1305 network time protocol 中規定,網路協議中的,時間戳的格式是乙個四個八位組。其值是自 1900 年以來的秒數。unix 沒有提供函式以獲得 1900 年以來的秒數,但...