Linux 操作系統基礎函數初步瞭解

 

 

  1. fork()函數:一次執行兩次返回,在fork函數執行完畢後,如果創建新進程成功,則出現兩個進程,一個是子進程,一個是父進程。在子進程中,fork函數返回0,在父進程中,fork返回新創建子進程的進程ID。我們可以通過fork返回的值來判斷當前進程是子進程還是父進程。
    while((p1=fork())==-1); //如果子進程創建失敗,則返回-1,while循環條件爲==-1爲真,重新執行while()循環,相當於不斷重複創建子進程一直到創建成功爲止

     

  2. wait()函數:父進程一旦調用了wait就立即阻塞自己,由wait自動分析是否當前進程的某個子進程已經退出,如果讓它找到了這樣一個已經變成殭屍的子進程,wait就會收集這個子進程的信息,並把它徹底銷燬後返回;如果沒有找到這樣一個子進程,wait就會一直阻塞在這裏,直到有一個出現爲止。
  3. signal()函數:signal信號函數,第一個參數表示需要處理的信號值(SIGHUP),第二個參數爲處理函數或者是一個表示,這裏,SIG_IGN表示忽略SIGHUP那個註冊的信號。
    #供學習參考的代碼片段
    
    signal(SIGINT,SIG_IGN);//忽略鍵盤輸入的 Ctrl+C
    
    signal(16,Int1); //只要收到信號16,則執行Int1()函數
  4. kill()函數:向相關進程發送信號;
    void IntDelete()
    
    {
    
    kill(pid1,16); //向進程 pid1 發送信號16
    
    kill(pid2,17); //同上
    
    }
  5. pause()函數:是當前進程處於等待狀態,直到接收到一個信號後才能恢復執行。
  6. lockf(1,1,0)函數:鎖定標準輸出設備,lockf(1,0,0):解鎖標準輸出設備。
    lockf(1,1,0); //鎖定標準輸出設備
    
    for(i=0;i<500;i++)
    
        printf("son %d\n",i);
    
    lockf(1,0,0); //解鎖標準輸出設備
  7. sleep()函數:自我阻塞
    sleep(5); //自我阻塞五妙

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章