POSIX無緩衝檔案I O及可變引數小玩

2021-04-21 01:49:56 字數 1435 閱讀 4862

這段以前寫的測試程式包含了對posix無緩衝檔案i/o、檔案加解鎖、程序分叉、可變引數的綜合運用。沒什麼技術含量,純粹記述一下,不想有一天弄丟了。

c真是又小巧又靈活,在語言的犄角旮旯還是存在一些之前完全想不到會有的特性,呵呵~不過,現在可能會從事的這個工作是不是只能用c不能用c++呢?難道真的得告別自己的最愛?

//posix

#include 

#include //for pid_t

#include 

#include 

#include 

//randoming

#include //for random

#include //for srand with time

//variable parameter list

#include 

//common

#include 

#include 

void my_read();

void my_write();

void lock_set(int fd, int type);

void my_lock_test(int n_tests, ...);

int main()

void my_read()

else

printf("open file: hello.c %d/n", fd);

if(close(fd) < 0)

else

printf("close hello.c/n");

}void my_write()

else

printf("open file: hello.c %d/n", fd);

if((size = write(fd, buf, len)) < 0)

else

printf("writes: %s/n", buf);

lseek(fd, 0, seek_set);

if((size = read(fd, buf_r, 10)) < 0)

else

printf("read first 10 characters from file: %s/n", buf_r);

if(close(fd) < 0)

else

printf("close hello.c/n");

}void lock_set(int fd, int type)

fcntl(fd, f_getlk, &lock);

if(lock.l_type != f_unlck)}}

void my_lock_test(int n_tests, ...)

va_start(test_cases, n_tests);

for(cur = 0; cur < n_tests; ++cur)

va_end(test_cases);

}

標準I O緩衝 全緩衝 行緩衝 無緩衝

說明 我只對網路資源進行了整合,方便學習 基於流的操作最終會呼叫read或者write函式進行i o操作。為了使程式的執行效率最高,流物件通常會提供緩衝區,以減少呼叫系統i o庫函式的次數。基於流的i o提供以下3種緩衝 全緩衝 直到緩衝區被填滿,才呼叫系統i o函式。對於讀操作來說,直到讀入的內容...

標準I O緩衝 全緩衝 行緩衝 無緩衝

某日一朋友寫了乙個hello world 出不來結果,如下 include intmain int argc,char argv 注意到,在 中printf語句列印的字串最後沒有帶換行符,而且最後呼叫了 exit函式,這導致了在終端螢幕上顯示不出來字串 hello world 首先介紹一下unix裡...

標準I O緩衝 全緩衝 行緩衝 無緩衝

說明 我只對網路資源進行了整合,方便學習 基於流的操作最終會呼叫read或者write函式進行i o操作。為了使程式的執行效率最高,流物件通常會提供緩衝區,以減少呼叫系統i o庫函式的次數。基於流的i o提供以下 3種緩衝 全緩衝 直到緩衝區被填滿,才呼叫系統i o函式。對於讀操作來說,直到讀入的內...