#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...