Linux一些重要的標頭檔案

2021-07-31 15:07:21 字數 3628 閱讀 8283

#inlclude

int  open(char *name,int how)   檔案開啟

#include

int  close(int fd)      檔案關閉

size_t   read(int fd,void *buf, size_t count)   讀

size_t   write(int fd,const void *buf,size_t count)  寫

sleep(1)   系統睡眠一秒鐘,最小單位為一秒。

#include

perror("會出現錯誤的函式名")

#include

char*  strerror(int errnum)   依據錯誤**errnum來查詢錯誤原因字串

char*  strcpy(char *dest,const char *src)

int      strcmp(char *s1,const char *s2)    s1若等於s2的值則返回0值

int      strncmp(char *s1,const char *s2,int n)  前n個字串比較

#include

pid_t  fork(void)   子程序中返回0 父程序中返回子程序id出錯返回-1

pid_t  getpid(void)  獲取程序號

pid_t  getppid(void)

pid_t  vfork(void)

exec函式族

程序pid的型別為pid_t 型別,它包含於#include若定義乙個程序pid變數,則需要包含此標頭檔案

exit(n) 結束程序 父程序可以由wait函式來獲得子程序結束裝狀態。

在程序結束的時候,會關閉檔案描述符號,做一些清理工作,只保留程序返回狀態等資訊

呼叫exit(),子程序會關閉所有開啟的程序描述符  exit會作清理工作,比如說,釋放記憶體(在c++裡面會主動的呼叫析構函式,),關閉檔案控制代碼的工作,包括重新整理io流。

_exit(n)直接退出,不會做一些清理工作,也不會關閉檔案描述符。

#include

pid_t  wait(int *status)  等待任意子程序結束。子程序結束狀態值由status返回。

如wexitstatus(status)可以獲得exit(2)中返回的值,status=2,這樣就可以知道所等待的為哪個程序。如果不用這個巨集轉換,則status=512.

pid_t  waitpid(pid_t pid,int status,int options) 可以指定等待某個程序號pid的程序結束

在使用waitpid函式時還用到了pid引數,所以還要加上#include

關於程序等待函式還有很多巨集將status轉換為需要的值,需要了解。

#include

int pipe(int filedes[2])

#include

#include

int mkfifo(const char *pathname,mode_t mode)

對於命名管道的操作同普通檔案的操作

資料型別key_t是在標頭檔案sys/types.h中定義的,它是乙個長整形的資料。

key=ftok(".",'a')  #include #include

所屬標頭檔案:#include#include #include

intmsgid;

msgid=msgget(key,ipc_creat | ipc_excl | 0666);

structmsg

msg1,msg2;  //訊息佇列緩衝區

intrcvtype=1;

msgsnd(msgid,&msg1,6,0)  6個位元組,最後乙個引數填寫為0表示函式呼叫阻塞直到滿足條件為止。

msgrcv(msgid,&msg2,6,rcvtype,0)   最後乙個引數也可為ipc_nowait,沒有收到訊息返回-1

msgctl(msgid,ipc_rmid,null);  刪除訊息佇列

#include

int kill(pid_t pid,int sig)

int raise(int signo);程序向自身傳送訊號

raise(signo)等價於kill(getpid(),signo);

alarm(2)定時兩秒後,產生sigalrm訊號,系統預設處理是結束程序。

int pause(void) //pause函式使呼叫程序掛起直至捕捉到乙個訊號。

signal(sigint,ctrl_c)  ctrl_c為函式名 功能:發出訊號後,呼叫訊號處理函式

訊號集資料結構的定義,sigset_t為結構體資料型別

sigset_t intmask;

sigemptyset(&intmask);

sigaddset(&intmask,sigint);

sigdelset(&intmask,sigint);

sigprocmask(inthow,const sigset_t *set,sigset_t *oset)

sigpromask(sigblock,&intmask,null)

#include

執行緒id型別為pthread_t 為結構體型別

獲得執行緒id的辦法

pthread_t tid; 

tid=pthread_self();

pthread_create(&tid,null,thread,null)  第二個引數為執行緒屬性,第三個引數為執行緒。第四個引數是可以向該執行緒傳遞引數。   執行緒void *thread(void *arg)

pthread_exit((void*)2)  //與return((void*)2)的區別?誰可以解答。。。

void*tret;

pthread_join(tid,&tret);

pthread_cancel(tid);

pthread_cleanup_push(fun,null);第乙個引數為清理函式,第二個為傳參,執行緒清理處理程式

pthread_cleanup_pop(0);0表示執行緒結束時不執行清理函式,非0執行,兩函式配對使用。

呼叫pthread_exit時,或響應取消時,即使是pthread_cleanup_pop(0);也執行清理函式。

互斥鎖互斥鎖型別為pthread_mutex_t mutex1

pthread_mutex_init(&mutex1,null)互斥鎖的建立,第二個引數為空,表示預設屬性。

pthread_mutex_destory(&mutex1)清除乙個互斥鎖

pthread_mutex_lock(&mutex1)

pthread_mutex_unlock(&mutex1)

訊號量#include

訊號量的型別sem_t sem1;

sem_init(&sem1,0,n)訊號量的初始化,第二個引數linux沒能實現在程序間訊號量的共享,所以值為0。

第三個引數為無符號整型,n表示訊號量初始化的值

sem_wait(&sem1)  p操作

sem_post(&sem1)  v操作

用pv實現執行緒間的互斥與同步功能

intsem_getvalue(sem_t *sem) 取得訊號量的值

intsem_destroy(sem_t *sem) 刪除訊號量

linux 中常用的一些標頭檔案

include 是在linux 2.6.29 include linux下面尋找原始檔。include 是在linux 2.6.29 arch arm include asm下面尋找原始檔。include 是在linux 2.6.29 arch arm mach s3c2410 include ma...

關於標頭檔案的一些常用

1.設定編碼資訊 設定語言 設定重定向 設定快取時間 不使用快取 設定關鍵字 設定描述資訊 設定對搜尋引擎抓取 設定可視區域 2.瀏覽器使用 二 tabindex屬性 摘自w3c 1 作用 規定元素的tab鍵控制次序 2 支援該屬性的標籤 3 示例 doctype html html body a ...

linux中常用C C 一些標頭檔案的作用

1 一些標頭檔案的作用 ansi c。提供斷言,assert 表示式 gcc。gtk,gnome的基礎庫,提供很多有用的函式,如有資料結構操作函式。使用glib只需要包含 gcc。資料夾操作函式。struct dirent,struct dir,opendir closedir readdir re...