1. 程式人生 > >open/read/write (終於寫的長了一點。。。)

open/read/write (終於寫的長了一點。。。)

http://wiki.ubuntu.org.cn/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh-cn
很有用的幫助查詢網站,中文化的,很方便,站在前人的肩膀上,容易很多,嘿嘿。
程式設計第一步就是裝編譯器。。linux一般都預設裝好gcc的,可ubuntu下,必須裝build-essential
$ sudo apt-get install build-essential
ubuntu的東西很依賴網路,除非你用的是dvd源。。可能是老外認為電腦就應該是連著網路的。。
裝了這個,順點IDE,推薦 anjuta ,KDevelop 這個個工具,後者的字型不知道怎麼改,太小了,我看不大清。。所以用前者了。
關於檔案操作的一組系統呼叫,
#include <fcntl.h> //用於flags的巨集定義
int open( char *filename, int flags) ;
int open ( char *filename ,int flags, mode_t mode) ;
巨集為:    O_RDONLY(只讀) ,O_WRONLY, O_CREAT,等
函式返回-1表示呼叫失敗,可能是不存在此檔案阿,沒許可權啥的
包含errno.h  用strerror(errno) 返回錯誤資訊,很方便
int read (int fd , void *buf, int len);
len為欲讀取的位元組數,
返回實際讀取的位元組數,buf是一個緩衝區,不能太小
int write( int fd, void *buf,int len);
關閉檔案
int close( int fd);
我按書上提示編了個讀取檔案的小程式,簡單版cat
#include <stdio.h>
#include 
<fcntl.h>
#include 
<errno.h>
int main(int argc, char*argv[] )
{
        
int fd,k,i,len;
        unsigned 
char buf[512] ;
        
for (k=1; k< argc; k++)
        
{
                fd 
= open(argv[k] , O_RDONLY);
                
if ( fd ==-1 )
                
{
                        fprintf(stderr,
"can't open the file,%s ",strerror(errno) ); 
                         
continue;
                }

                
while ( len = read (fd,buf,sizeof(buf) >0 ) )
                
{
                        
for ( i=0;i<len;i++)
                                printf(
"%c" ,buf[i] );
                }

                
if(len<0)
                        perror(
"read data");
                close(fd);
        }

        printf(
"");
        
return0;
}



gcc編譯不帶指定outfile的話他會產生一個 .o 的輸出,我不知道怎麼把.o的東西轉成可執行檔案,所以只能gcc fr.c -o fr
效果還不錯,當然這是最最簡單的。。。


編譯的時候我還發現個有趣的現象,就是你mkdir source 這個存放原始碼的目錄,可是當你cd source時卻cd不進去,
[email protected]-desktop:~$ ls
Desktop  Examples  rf  rf.c  source   未命名資料夾
[email protected]
-desktop:~$ cd source
bash: cd: source: No such file or directory


  我想了下,source應該是條命令,因為單獨輸入source

bash: source: 此處需要檔名作引數
source: usage: source filename [arguments]

可不知道怎麼讓bash 讓他只認為是cd 的引數,應該有什麼類似轉義的東西,可是我暫時沒找到,最近不知道為什麼老咳嗽。。明天強颱風學校不想去了,淋溼了以後很容易就感冒了,而且學校裡學不到什麼,其他學校都停課的。。就當給自己放假了。。

相關推薦

open/read/write 終於一點

http://wiki.ubuntu.org.cn/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh-cn 很有用的幫助查詢網站,中文化的,很方便,站在前人的肩膀上,容易很多,嘿嘿。 程式設計第一步就是裝編譯器。。linux一

四種讀檔案的方式:系統呼叫open/read/write,C語言fopen,fgets, fputs,C++(ifstream, ofstream getline,)泛型演算法

第一種方法是系統呼叫 (1)open系統呼叫    原型:        #include <sys/types.h>        #include <sys/stat.h>        #include <fcntl.h>     

Linux系統函數open,read,write

() lseek sed fse prot 地址 stdio.h buffer pri 實現代碼 #include<sys/stat.h> #include<sys/types.h> #include<fcntl.h> #include

ftp安裝和虛擬用戶創建終於搞清楚

sftp att word 很多 刪除 用戶創建 手動 人員 require 之前領導叫我在Linux下搭建一個FTP服務器,搞一個公司內部人員文件結構,並對相應人員設置相應的訪問權限,之前網上有很多安裝方法,但是都是很傻瓜式地安裝,用戶簡單地創建,而我當時也是用的最笨的方

移動設備分辨率終於弄懂為什麽移動端設計稿總是640px和750px

blank 深入理解 之間 可能 -s nba 網上 清晰 href   在我開始寫移動端頁面至今,一直有2個疑問困擾著我,我只知道結果但不知道為什麽   問題1:為什麽設計師給的設計稿總是640px或750px(現在一般以Phone6為基準,給的750px)   問題

GB2312、GBK、ISO-8859-1、ASCII碼、Unicode、UTF-8各種編碼格式詳解終於搞懂

從計算機編碼歷史這條主線來理解各種編碼格式 計算機發明於歐美語系世界,最初只需要處理英文字母的編碼就可以了,也就是ISO-8859-1編碼規範;後來傳到中國,原有的編碼規範不能識別中文,於是發展出了GB2312、GBK等格式來編碼中文,同樣的對於阿拉伯語系、德俄西班牙之類的也會有其相應的編碼

移動裝置解析度終於弄懂為什麼移動端設計稿總是640px和750px

原文出處:https://www.cnblogs.com/tu-0718/p/9596894.html 在我開始寫移動端頁面至今,一直有2個疑問困擾著我,我只知道結果但不知道為什麼   問題1:為什麼設計師給的設計稿總是640px或750px(現在一般以Phone6為基準,給的750px)

CentOS 安裝oracle資料庫終於搞通~~

要在CentOS6.5上,安裝oracle 11 r2,網上搜尋了好久,還是各種不通,搞了一天終於弄好了,這裡記錄一下; 首先宣告:安裝的機器記憶體至少要2G,因為在後面安裝的時候,會有個preckeck,記憶體不能小於1G,我都是到最後才發現不行,崩潰。。。

open/read/write/close等檔案系統呼叫介面以及fd與FILE的比較

在Linux系統下,檔案是一個很重要的概念,接下來就介紹一下其相關的介面函式 一、熟悉open/read/write/close等檔案相關係統呼叫介面 1、open函式 註釋: (1)函式說明:用來開啟一個已經存在的檔案或者建立一個普通檔案 (

uva116程式碼

思路很明確的一個題目, 但是卻在uva上wa了好多次,但是在hdu上過了,問題在於,hdu資料不全 當列數為1 的時候,我原來的程式碼是會崩的,並且會錯,幸好一開始錯在RE才讓我想到1的問題,要是一直wa,可能真的要找更久的bug了,這個細節,真的該好好反思一下 錯誤程式碼

java Io操作分類整理終於不再迷糊!!!

下面對學習進行一下簡單的總結 。(注圖片未上傳,想看請下載附件):         IO流主要用於硬板、記憶體、鍵盤等處理裝置上得資料操作,根據處理資料的資料型別的不同可以分為:位元組流(抽象基類為InPutStream和OutPutStream)和字元流(抽象基類為Rea

ftp安裝和虛擬使用者建立終於搞清楚

       之前領導叫我在Linux下搭建一個FTP伺服器,搞一個公司內部人員檔案結構,並對相應人員設定相應的訪問許可權,之前網上有很多安裝方法,但是都是很傻瓜式地安裝,使用者簡單地建立,而我當時也是用的最笨的方法建立了很多的本地使用者,並對本地使用者實現了領導佈置的要求

jdk代理只能代理實現接口的類

ati ssl 調用 類的方法 face oca 加載器 一個 getc 被代理對象實現了某些接口,在運行時產生class(代理)類,使用動態代理實現InvocationHandler接口 1.創建一個實現InvocationHandler的類,它必須實現invoke(pr

Object類toString/equals/接收引用資料型別

什麼是Objetc類? Object是JAVA預設提供的類。 在Java中除了Object類,所有的類都有繼承關係,預設會繼承Object父類,所有類物件都可以通過Object類進行接收,即向上轉型。 ////Object可以接收任何類 class A{} class B{} publi

翻譯的最高境界笑死我!!!!

李莫愁 Don't Worry Lee   李尋歡 Be Happy Lee   常遇春 Always Meet Spring   楊不悔 No Regrets Young   楊逍 Happy Young   範遙 Far Fan   王重陽 Double Sun King   金輪法王 Golden Wh

幾種開源SIP協議棧對比文章很早,僅供參考

幾種開源SIP協議棧對比 2006-12-05 15:49   基於SIP的開發的話,基本還是使用開源的協議棧的,當然也有牛的公司和單位是自己開發協議棧的,不過並不一定比開源的好用,不過可能使用在特定場合時,會有一定優勢吧。   在以前開發UA時,我用的

機器人行走 * 某少年宮引進一批機器人小車可以接受預先輸入的指令,按指令行動小車的基本動作很簡單,只有3種:左轉記為L,右轉記為R,向前走若干釐米直接記數字)。 例如,我們

/** * 某少年宮引進了一批機器人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單,只有3種:左轉(記為L),右轉(記為R),向前走若干釐米(直接記數字)。 例如,我們可以對小車輸入如下的指令: 15L10R5LRR10R20 則,小車先

用JavaScript在頁面上彈出蒙板最簡單的,絕對可以用

蒙板是兩個div,其中popWindow樣式的div用於遮住整個頁面,並半透明。maskLayer 在popWindow上面,用於顯示蒙板的資訊,比如“載入中……“ <html> <head> <style type="text/css"&

阿里雲備案流程終於去掉8080埠也能訪問網站

本文目錄 必要性 綁定了域名,上傳了專案,伺服器用tomcat 訪問地址是這般 1、域名+埠號+專案名稱:sdjtu.xin:8080/zmjy 修改tomcat的 server.xml之後, 修改前: <Host n

關於自控力文章得不是一般的亂

2017年10月11日01點38分 關於自控力 出來工作後感覺現在自己要改變(不會安排時間自己去學習新技能,缺少運動),並且在一次與和大學舊同學聊天中發現一個問題。在社會生活,自控力相當重要,沒有好的自控力,可能可能會連一件事情也不能很好地完成,更不用說去自