Unix系統程式設計(二)open的練習

2021-09-07 17:27:31 字數 1364 閱讀 8052

#include #include 

#include

#include

intmain()

open函式第二個引數是檔案開啟的標誌,比如唯讀(o_rdonly)等,還有副標誌(o_creat,o_trunc)等。主標誌是互斥的,但是我不知道居然可以不指定主標誌,而只用副標誌。

然後第三個引數指定了建立檔案的許可權位。

open()乙個檔案,返回的描述符從3開始增加(0,1,2分別是標準輸出,標準輸入和標準錯誤)

由於umask一開始是022(我用的是root),所以建立出來的許可權不是777,而是755,設定umask為000之後再執行以下建立出的abc的許可權位就是777了。

/*

* open a file with pathname from arguments

* tuhooo */

#include

#include

#include

#include

#include

int main(int argc, char *ar**)

if((fd = open(ar**[1], o_creat | o_rdwr, 0644)) == -1

) printf(

"fd = %d\n

", fd);

}

原來o_creat如果在檔案存在的時候不會去建立的,我還以為會把原來檔案的內容清空呢。

果然在標誌位加上o_trunc之後檔案的內容就被清空掉了。

直接在許可權位寫數字是不是有點硬編碼了。

#include #include 

#include

#include

#include

#include

#include

int main(int argc, char *ar**)

/*if open file correctly

*/if((fd = open(ar**[1], o_creat | o_rdwr, 0644)) == -1

)

/*write something

*/write(fd, buf, strlen(buf));

printf(

"fd = %d\n

", fd);

/*close fd

*/close(fd);

return0;

}

這個例子看上去還挺簡單的,就是加了乙個write函式在這裡了。

好像這就把open函式學完了,掌握了這幾個例子,開啟或者建立檔案就不是問題啦。

原文:

unix系統程式設計

popen pclose popen介面定義 include file popen const char command,const char type int pclose file stream popen函式會建立乙個管道,並且建立乙個子程序來執行shell,shell會建立乙個子程序來執行c...

UNIX系統程式設計1

man 你想查詢的內容 如果man你也不會用也不要緊,那你就 man man 一下,呵呵。只可惜好像還沒有翻譯成中文,對於像我這樣英文水平還有待提高的朋友來說讀起來有點麻煩。最後還有乙個好工具就是網路,有什麼不會的google一下好多問題都能解決。好,囉嗦的半天,說歸正傳,免得給大家造成光說不練的印...

Unix系統程式設計()brk,sbrk

在堆上分配記憶體 程序可以通過增加堆的大小來分配記憶體,所謂堆是一段長度可變的連續虛擬記憶體,始於程序的未初始化資料段末尾,隨著記憶體的分配和釋放而增減。通常將堆的當前記憶體邊界稱為 program break 下面也會學習一族函式brk,sbrk和malloc。調整program break br...