Linux一些重要的標頭檔案
1.系統呼叫 ---檔案的操作函式
#inlclude <fcntl.h>
int open(char *name,int how) 檔案開啟
#include <unistd.h>
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 <stdio.h>
perror("會出現錯誤的函式名")
#include <string.h>
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個字串比較
2.程式控制函式
#include <unistd.h>
pid_t fork(void) 子程式中返回0 父程式中返回子程式ID出錯返回-1
pid_t getpid(void) 獲取程式號
pid_t getppid(void)
pid_t vfork(void)
exec函式族
程式pid的型別為pid_t 型別,它包含於#include<sys/types.h> 若定義一個程式pid變數,則需要包含此標頭檔案
exit(n) 結束程式 父程式可以由wait函式來獲得子程式結束裝狀態。
在程式結束的時候,會關閉檔案描述符號,做一些清理工作,只保留程式返回狀態等資訊
呼叫exit(),子程式會關閉所有開啟的程式描述符 exit會作清理工作,比如說,釋放記憶體(在C++裡面會主動的呼叫解構函式,),關閉檔案控制程式碼的工作,包括重新整理IO流。
_exit(n)直接退出,不會做一些清理工作,也不會關閉檔案描述符。
#include <sys/wait.h>
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<sys/types.h>
關於程式等待函式還有很多巨集將status轉換為需要的值,需要了解。
3.程式間通訊-管道
#include <unistd.h>
int pipe(int filedes[2])
4.程式間通訊-命名管道
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char *pathname,mode_t mode)
對於命名管道的操作同普通檔案的操作
5.訊息佇列
資料型別key_t是在標頭檔案sys/types.h中定義的,它是一個長整形的資料。
key=ftok(".",'A') #include <sys/types.h> #include<sys/ipc.h>
所屬標頭檔案:#include<sys/types.h>#include <sys/ipc.h> #include <sys/msg.h>
intmsgid;
msgid=msgget(key,IPC_CREAT | IPC_EXCL | 0666);
structmsg
{
long mtype;
char mtext[50];
}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); 刪除訊息佇列
6.程式間通訊-訊號
#include<signal.h>
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為函式名 功能:發出訊號後,呼叫訊號處理函式
7.訊號集函式組 阻塞訊號
訊號集資料結構的定義,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)
8.執行緒
#include<pthread.h>
執行緒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<semaphore.h>
訊號量的型別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 標頭檔案 作用Linux
- linux下使用windows標頭檔案LinuxWindows
- 8.14 Linux核心中的標頭檔案Linux
- 8.13 標頭檔案剖析:標頭檔案路徑(下)
- C 標頭檔案
- 標頭檔案的作用分析
- #include sys/xxx.h標頭檔案 UNIX標頭檔案
- locate標頭檔案和庫檔案
- 02@在類的標頭檔案中儘量少引入其他標頭檔案
- C 標頭檔案 作用
- 祖傳標頭檔案
- 標頭檔案講解
- linux和STL 常用標頭檔案及說明Linux
- fcntl.h標頭檔案
- 什麼是 標頭檔案
- 關於C++的標頭檔案C++
- pch檔案的使用, 標頭檔案使用, 常量(const)的定義,以及一些常用的巨集定義
- 與Linux檔案和目錄管理相關的一些重要命令Linux
- C/C++標頭檔案太難記?一個萬能標頭檔案全搞定!C++
- algorithm標頭檔案下的常用函式Go函式
- C語言標頭檔案#include的作用C語言
- c++筆記_標頭檔案C++筆記
- Nt函式原型標頭檔案函式原型
- C語言 - 標頭檔案包含C語言
- 標頭檔案與庫檔案與菜鳥 (轉)
- 模組的封裝(四):標頭檔案的疼封裝
- 巨集_變數_函式_指標_標頭檔案變數函式指標
- EclipseCDT標準庫標頭檔案設定Eclipse
- POSIX.1 and ISO C標準標頭檔案
- C++標準庫標頭檔案介紹C++
- C++ 標頭檔案的包含順序研究C++
- C語言標頭檔案的使用(轉載)C語言
- Opencv各個版本的萬能標頭檔案OpenCV
- C語言關於標頭檔案的使用C語言
- C/C++標頭檔案一覽C++
- 8.8 標頭檔案剖析:基本概念
- C++ 預編譯標頭檔案C++編譯
- 避免標頭檔案重複定義