Linuxのプログラミングは、ファイルのステータスを取得および設定FCNTL

する#include <stdio.hに> 
する#include <STDLIB.H> 
する#include <unistd.h> 
の#include <fcntl.h> 

の#define Err_Exit(M)\ 
        実行\ 
        {\ 
                perrorは(M); \ 
                終了(EXIT_FAILURE)。 \ 
        }ながら(0)

ファイル状態に//設定
ボイドSET_FLAGを(int型FD、INTフラグ); 
//ファイル状態REMOVE 
ボイドclear_flag(int型FD、フラグint)を、

int型のmain(int型ARGC、チャー*のARGV [ ]){ 

        チャーBUF [64] = {0}; 
        NREAD int型; 

        //セット非ブロック
        SET_FLAG(0、O_NONBLOCK); 
        //はブロックされていない状態をクリアするが、ブロックされた状態になる標準入力読み込み
        clear_flag(0、O_NONBLOCK)を; 
        NREAD =読む(0、BUF、64)。
        IF(NREAD == -1){ 
        oldflag =のfcntl(FD、F_GETFL、0);
                ERR_EXIT( "入力が失敗GET"); 
        } 
        のprintf( "BUF =%S \ N-"、BUF); 

        戻り0; 
} 

ボイドSET_FLAG(INT FD、フラグINT){ 
        int型oldflag; 
        oldflag =のfcntl(FD、F_GETFL、0 ); 
        IF(oldflag == -1){ 
                Err_Exit() "元の状態の失敗を取得"; 
        } 

        oldflag oldflag = |フラグ; 
        int型のRET =のfcntl(FD、F_SETFL、oldflag); 
        IF(RET == -1){ 
                ERR_EXIT( "新しいファイルを設定した状態を失敗しました"); 
        } 
} 

ボイドclear_flag(FDの整数、フラグINT){ 
        int型oldflag; 
        IF(oldflag == -1){ 
                ERR_EXIT( "元の状態に「)の取得に失敗しました。
        } 
        Oldflag =〜&フラグoldflag; 
        int型のRET =のfcntl(FD、F_SETFL、oldflag); 
        IF(RET == -1){ 
                Err_Exit( "失敗した新しいファイルを設定するために状態"); 
        } 
}

  

おすすめ

転載: www.cnblogs.com/ghostwu/p/10984615.html