當前位置:首頁 » 操作系統 » linux套接字文件

linux套接字文件

發布時間: 2022-09-12 03:47:19

1. linux系統中有哪幾種文件類型

第一種:普通文件。就是一般存取的文件,由ls-al顯示出來的屬性中,第一個屬性為 [-];另外,依照文件的內容,又大致分為:
1、純文本文件:這是Unix系統中最多的一種文件類型,之所以稱為純文本文件,是因為內容可以直接讀到數據,比如數字、字母等。設置文件幾乎都屬於這種文件類型。
2、二進制文件:系統其實僅認識且可以執行二進制文件。Linux中的可執行文件就是這種格式的。
3、數據格式的文件:有些程序在運行過程中,會讀取某些特定格式的文件,那些特定格式的文件也可以稱為數據文件。
第二種:目錄文件。就是目錄,第一個屬性為[d]。
第三種:連接文件。類似Windows下的快捷方式,第一個屬性為[l]。
第四種:設備文件。與系統外設及存儲等相關的一些文件,通常都集中在/dev目錄,又分為兩種。
1、塊設備文件:就是存儲數據以供系統存取的介面設備,簡單而言就是硬碟,第一個屬性為 [b]。
2、字元設備文件:即串列埠的介面設備,比如鍵盤、滑鼠等,第一個屬性為 [c]。
第五種:套接字文件:這類文件通常用在網路數據連接,可以啟動一個程序來監聽客戶端的要求,客戶端就可以通過套接字來進行數據通信。第一個屬性為[s],常在
/var/run目錄中看到這種文件類型。
第六種:管道文件:FIFO也是一種特殊的文件類型,它主要的目的是,解決多個程序同時存取一個文件所造成的錯誤,FIFO是first-in-first-out的縮寫,第一個屬性是[p]。
更多Linux知識,可關注「老男孩Linux」公眾號

2. Linux文件管理基礎及編輯工具用法

文件名稱區分大小寫

文件名最長255個字元

包括路徑在內文件名稱最長4095個位元組

藍色-->目錄:綠色-->可執行文件:紅色-->壓縮文件:淺藍色-->鏈接文件:灰色-->其它文件

除了斜杠和NUL,所有字元都有效,使用特殊字元的目錄名和文件不推薦使用,有些字元需要加引號來引用

標准Linux文件系統,文件名稱大小寫敏感



/boot: 內核引導文件存放目錄

/bin: 所有用戶使用的基本命令;不能關聯至獨立分區,系統啟動會用到的程序

/sbin: 管理類的基本命令;不能關聯至獨立分區,系統啟動會用到的程序

/lib: 系統啟動時程序依賴的基本共享庫文件及內核模塊文件(/lib/moles)

/etc: 配置文件目錄

/home: 普通用戶家目錄

/root: 管理員家目錄

/media: 攜帶型移動設備掛載點



/mnt: 臨時文件系統掛載點

/dev: 設備文件及特殊文件存儲位置

/opt: 第三方應用程序安裝位置,同/usr/local

/srv: 系統服務用到的數據

/tmp: 存儲臨時文件

/usr: 系統軟體資源存放目錄

/var: 系統運行時的可變動數據:/var/tmp:系統兩次重啟產生的臨時數據



/proc: 內核與進程信息相關的虛擬文件系統

/sys: 硬體設備相關信息的虛擬文件系統

/selinux: selinux安全策略

meta data: 

    文件類型,許可權,UID,GID

    鏈接數(指向這個文件名路徑名稱個數)

    該文件的大小和不同的時間戳

    指向磁碟上文件的數據塊指針

    有關文件的其他數據



        文件類型:

            -: 普通文件

            d: 目錄文件

            b: 塊設備

            c: 字元設備

            l: 符號鏈接文件

            p: 管道文件pipe

            s: 套接字文件socket



        查看方式:

            使用ll,ls -l: 看第一個字元,鏈接數,

            ls -lih:

                inode編號,文件類型,文件許可權,硬鏈接個數,文件屬主,文件屬組,文件大小,文件修改時間

            file命令,type命令,

            stat命令: 文件詳細信息,修改時間mtime,改變時間ctime,訪問時間atime

            -sm filename: 查看文件大小

            文件擴展名:

                源碼.tar、.tar.gz、.tgz、.zip、.tar.bz表示壓縮文件,創建命令一般為tar,gzip,zip等。

                .sh表示shell腳本文件,通過shell語言開發的程序。

                .pl表示perl語言文件,通過perl語言開發的程序。

                .py表示python語言文件,通過python語言開發的程序。

                .html、.htm、.php、.jsp、.do表示網頁語言的文件。

                .conf表示系統服務的配置文件。

                .rpm表示rpm安裝包文件。



        touch: 創建空文件和刷新時間戳

            touch [OPTION]... FILE...



                -a: 改變atime和ctime

                -m: 改變mtime和ctime

                -t: [[CC[YY[MMDDhhmm[.ss]]]]]

                    指定atime和mtime的時間戳

                -c: 如果文件不存在,則不予創建 

硬鏈接:

    同一個文件多個名字

    不支持跨分區,不支持目錄

    平級關系,刪除原始文件不影響打開

    iNode相同,鏈接數增長

    創建語法,原始文件路徑,相對於工作目錄的路徑

    文件類型,普通文件

    創建方式ln filename [linkname]

軟鏈接:

    與原始文件,不同的文件

    支持跨分區,支持目錄

    依賴關系,刪除原始文件即失效

    iNode不同,鏈接數不會增長

    創建語法,原始文件路徑,相對於軟鏈接的路徑

    文件類型顯示l

    創建方式ln -s filename [linkname]



實例說明:

    cd ../data

    mkdir -pv d1/d2

    touch linux.txt

    ln linux.txt d1/d2/linux.hlink

    ln -s ../../linux.txt d1/d2/linux.slink

    ln -s ../d2 d1/d2/d2.slink

    tree



    執行如圖:

stat: 查看文件狀態

    示例: stat /etc/issue

        stat/etc/motd



touch: 創建空文件和刷新時間

    touch [OPTION]... FILE...

        -a: 僅改變atime和ctime

        -m: 僅改變mtime和ctime

        -t: 指定atime和mtime時間戳

        -c: 如果文件不存在,則不予創建



    示例: touch /data/f1



cp: 復制文件和目錄

    cp [OPTION]... SOURCE... DIRECTORY

        -i: 覆蓋前提示

        -n: 不覆蓋

        -r,-R: 遞歸復制目錄及內部的所有內容

        -a: 歸檔,相當於-dR --preserv=all

        -p: 等同--preserv=mode,ownership,timestamp

        -u: 只復制源比目標更新或目標不存在

        -b: 目標存在,覆蓋前先備份filename~

        --backup=numbered: 目標存在,覆蓋前先備份並加數字後綴



    cp SRC DEST

        SRC是文件:

            如果目標不存在: 新建DEST,並將SRC中內容填充至DEST中

            如果目標存在:

                如果DEST是文件: 將SRC中內容覆蓋至DEST中

                如果DEST是目錄: 在DEST下新建與原文件同名的文件,並將SRC中內容填充至新文件中



        SRC是多個文件:

            DEST必須存在,且為目錄

        SRC是目錄: 使用選項-r

            如果DEST不存在: 則創建指定目錄,復制SRC目錄中所有文件至DEST中

            如果DEST存在:

                如果DEST是文件: 報錯

                如果DEST是目錄:在DEST下新建與原目錄同名的目錄,並將SRC中內容復制至新目錄中



    示例: mkdir -p /data/backup

        cp -ab /etc/issue /etc/passwd /etc/group /data/backup



mv: 移動和重命名文件

    mv [OPTION]... SOURCE... DIRECTORY

        -f: 強制

        -b: 目標存在,覆蓋前先備份



    示例: mv /etc/issue /data

        mv /etc/issue /data/issue.bak



rm: 刪除

    rm [OPTION]... FILE...

        -f: 強制刪除

        -r: 遞歸

        --no-preserve-root 刪除/



    示例: rm -rf /data/d1/d2



tree: 顯示目錄樹

    -d:只顯示目錄

    -L level: 指定顯示的層級數目

    -P pattern: 只顯示由指定pattern匹配到的路徑



    示例: tree /data



ls:列出指定目錄下的內容

    ls [OPTION]... [FILE]...

-a:顯示所有文件包括隱藏文件

-A:顯示除.和..之外的所有文件

-l,--long:顯示文件的詳細屬性信息

-h:對文件大小進行單位換算,可能影響精度

-d:查看目錄本身而非其內部的文件

-r:逆序顯示文件

-R:遞歸顯示文件

    示例:ls -lah / 詳細顯示/目錄下的所有文件(包括隱藏文件)



mkdir:創建目錄

    mkdir [OPTION]... DIRECTORY...

-p:自動按需創建父目錄

-m:創建目錄時給定許可權



    示例: mkdir -p /data/test/A/B



cat:正向查看文本內容

    cat [OPTION]... [FILE]...

-n:給顯示的文本行編號

-E:顯示行結束符號$



    示例: cat -n /etc/fstab



tail:顯示文本內容,默認顯示後10行

    tail [OPTION]... [FILE]...

-n #:顯示文本後#行內容

-f:查看文件尾部內容結束後不退出,跟隨顯示新增的行

    示例: tail -8 /etc/passwd



head:顯示文本內容,默認顯示頭10行

    head [OPTION]... [FILE]...

-n #:顯示文本頭#行內容

    示例: head -5 /etc/passwd



less:分屏顯示文本內容,不主動退出

    less [options] file [...]

Space鍵:顯示文本下一屏內容

Enter鍵:只顯示文本下一行內容

b鍵:顯示文本上一屏內容

q鍵:退出

cp /etc/profile /tmp

vim /tmp/profile

    :%s/^\s\+//



如圖:

命令模式下輸入:

    :set tabstop=4

或寫入用戶配置文件~/.vimrc

3. 在LINUX下如何修改文件類型

d
目錄文件。
l
符號鏈接(指向另一個文件,類似於瘟下的快捷方式)。
s
套接字文件。
b
塊設備文件,二進制文件。
c
字元設備文件。
p
命名管道文件。
-
普通文件,或更准確地說,不屬於以上幾種類型的文件。
重點注意的是普通文件,在查看文件類型的時候使用file命令和ll命令結合來查看文件的類型
設備文件分為block
device
driver和character
device
drive兩類。character
device
drive又被稱為字元設備或裸設備raw
devices;
block
device
driver通常成為塊設備。而block
device
driver是以固定大小長度來傳送轉移資料
;character
device
driver是以不定長度的字元傳送資料
。且所連接的devices也有所不同,block
device大致是可以隨機存取(random
access)資料的設備,如硬碟機或光碟機;而character
device剛好相反,依循先後順序存取資料的設備,如印表機
、終端機等皆是。
1.字元設備只能以位元組為最小單位訪問,而塊設備以塊為單位訪問,例如512位元組,1024位元組等
2.塊設備可以隨機訪問,但是字元設備不可以
3.字元和塊沒有訪問量大小的限制,塊也可以以位元組為單位來訪問
the
type
printed
will
usually
contain
one
of
the
words
text
(the
file
contains
only
printing
characters
and
a
few
common
control
characters
and
is
probably
safe
to
read
on
an
ascii
terminal),
executable
(the
file
contains
the
result
of
compiling
a
program
in
a
form
understandable
to
some
unix
kernel
or
another),
data
meaning
anything
else
(data
is
usually
`binary'
or
non-printable).
any
file
that
cannot
be
identified
as
having
been
written
in
any
of
the
character
sets
listed
above
is
simply
said
to
be
``data''.

4. linux中套接字文件丟失怎麼辦

可以使用光碟rescue修復安裝一下 如果你知道哪個文件丟失了,直接從別的系統把這個文件進去也可以的

5. linux中read,write和recv,send的區別

Linux的recv、send函數和read、write函數都可以用於套接字編程
區別:
1、recv、send只用於套接字通信;
2、read、write是底層系統調用,只要是文件操作就都可以用, 比如套接字操作,套接字描述符屬於是文件描述符的一種,套接字本身在Linux上就叫做套接字文件。
所以read、write函數不光可以用於套接字編程,也可以用於讀取其他各種文件,比如用於文件編程讀寫普通文件。

6. linux 下創建套接字函數SOCKET()頭文件問題。

client.c:62:錯誤,套接字還沒有指明在這個范圍

7. 如何使用Linux套接字

socket建立的套接字和文件描述符類似,要自己定義變數接收埃
socket建立的套接字和文件描述符類似,要自己定義變數接收埃

8. linux手冊翻譯——socket(7)

socket - Linux 套接字介面

本手冊頁描述了 Linux 網路套接字層用戶介面。 套接字是用戶進程和內核中網路協議棧之間的統一介面。 協議模塊分為協議族(protocol families)(如 AF_INET、AF_IPX 和 AF_PACKET)和套接字類型(socket types)(如 SOCK_STREAM 或 SOCK_DGRAM)。 有關families和types的更多信息,請參閱 socket(2) 。

用戶進程使用這些函數來發送或接收數據包以及執行其他套接字操作。 有關更多信息,請參閱它們各自的手冊頁。

socket(2) 創建套接字,connect(2) 將套接字連接到遠程套接字地址,bind(2) 函數將套接字綁定到本地套接字地址,listen(2) 告訴套接字應接受新連接, accept(2) 用於獲取具有新傳入連接的新套接字。 socketpair(2) 返回兩個連接的匿名套接字(僅為少數本地families如 AF_UNIX 實現)

send(2)、sendto(2) 和sendmsg(2) 通過套接字發送數據,而recv(2)、recvfrom(2)、recvmsg(2) 從套接字接收數據。 poll(2) 和 select(2) 等待數據到達或准備好發送數據。 此外,還可以使用 write(2)、writev(2)、sendfile(2)、read(2) 和 readv(2) 等標准 I/O 操作來讀取和寫入數據。

getsockname(2) 返回本地套接字地址, getpeername(2) 返回遠程套接字地址。 getsockopt(2) 和 setsockopt(2) 用於設置或獲取套接字層或協議選項。 ioctl(2) 可用於設置或讀取一些其他選項。

close(2) 用於關閉套接字。 shutdown(2) 關閉全雙工套接字連接的一部分。

套接字不支持使用非零位置查找或調用 pread(2) 或 pwrite(2)。

通過使用 fcntl(2) 在套接字文件描述符上設置 O_NONBLOCK 標志,可以在套接字上執行非阻塞 I/O。 然後所有會阻塞的操作(通常)將返回 EAGAIN(操作應稍後重試); connect(2) 將返回 EINPROGRESS 錯誤。 然後用戶可以通過 poll(2) 或 select(2) 等待各種事件。

如果不使用poll(2) 和 select(2) ,還讓內核通過 SIGIO 信號通知應用程序有關事件的信息。 為此,必須通過 fcntl(2) 在套接字文件描述符上設置 O_ASYNC 標志,並且必須通過 sigaction(2) 安裝有效的 SIGIO 信號處理程序。 請參閱下面的信號討論。

每個套接字域(families)都有自己的套接字地址格式,具有特定於域的地址結構。 這些結構的首欄位都是整數類型的「家族」欄位(類型為 sa_family_t),即指出自己的套接字域或者說是protocol families。 這允許對所有套接字域可以使用統一的系統調用(例如,connect(2)、bind(2)、accept(2)、getsockname(2)、getpeername(2)),並通過套接字地址來確定特定的域。

為了允許將任何類型的套接字地址傳遞給套接字 API 中的介面,定義了類型 struct sockaddr。 這種類型的目的純粹是為了允許將特定於域的套接字地址類型轉換為「通用」類型,以避免編譯器在調用套接字 API 時發出有關類型不匹配的警告。
struct sockaddr 以及在AF_INET常用的地址結構struct sockaddr_in如下所示,sockaddr_in.sin_zero是佔位符:

此外,套接字 API 提供了數據類型 struct sockaddr_storage。 這種類型適合容納所有支持的特定於域的套接字地址結構; 它足夠大並且正確對齊。 (特別是它足夠大,可以容納 IPv6 套接字地址。)同struct sockaddr一樣,該結構體包括以下欄位,可用於標識實際存儲在結構體中的套接字地址的類型: sa_family_t ss_family;
sockaddr_storage 結構在必須以通用方式處理套接字地址的程序中很有用(例如,必須同時處理 IPv4 和 IPv6 套接字地址的程序)。

下面列出的套接字選項可以使用setsockopt(2) 設置並使用getsockopt(2) 讀取。

當寫入已關閉(由本地或遠程端)的面向連接的套接字時,SIGPIPE 被發送到寫入進程並返回 EPIPE。 當寫調用指定 MSG_NOSIGNAL 標志時,不發送信號。

當使用 FIOSETOWN fcntl(2) 或 SIOCSPGRP ioctl(2) 請求時,會在 I/O 事件發生時發送 SIGIO。 可以在信號處理程序中使用 poll(2) 或 select(2) 來找出事件發生在哪個套接字上。 另一種方法(在 Linux 2.2 中)是使用 F_SETSIG fcntl(2) 設置實時信號; 實時信號的處理程序將使用其 siginfo_t 的 si_fd 欄位中的文件描述符調用。 有關更多信息,請參閱 fcntl(2)。

在某些情況下(例如,多個進程訪問單個套接字),當進程對信號做出反應時,導致 SIGIO 的條件可能已經消失。 如果發生這種情況,進程應該再次等待,因為 Linux 稍後會重新發送信號。

核心套接字網路參數可以通過目錄 /proc/sys/net/core/ 中的文件訪問。

These operations can be accessed using ioctl(2):

error = ioctl(ip_socket, ioctl_type, &value_result);

Valid fcntl(2) operations:

Linux assumes that half of the send/receive buffer is used for internal kernel structures; thus the values in the corresponding /proc files are twice what can be observed on the wire. Linux will allow port reuse only with the SO_REUSEADDR option when this option was set both in the previous program that performed a bind(2) to the port and in the program that wants to reuse the port. This differs from some implementations (e.g., FreeBSD) where only the later program needs to set the SO_REUSEADDR option. Typically this difference is invisible, since, for example, a server program is designed to always set this option.

9. linux 文件屬性 lrwxrwxrwx

問題中的表示出該文件為符號鏈接文件,擁有許可權為777

linux文件屬性解讀:

文件類型:

-:普通文件 (f)

d:目錄文件

b:塊設備文件 (block)

c:字元設備文件 (character)

l:符號鏈接文件(symbolic link file)

p:命令管道文件(pipe)

s:套接字文件(socket)

文件許可權: 9位,每3位一組,每一組:rwx(讀,寫,執行),當改組不具有某一許可權用-代替。

第一組為: 文件擁有者的許可權, 該文件的擁有者可以讀寫,但不可執行;

第二組為: 同群組的許可權

第三組為: 其他非本群組的許可權

若想為某一文件具有該屬性需要執行以下操作:

lnfilename1filename
chmod777filename

第一句是創建文件符號鏈接filename,第二句是為該符號鏈接文件創建777許可權。

熱點內容
php分割文件 發布:2025-07-05 02:22:15 瀏覽:478
sql平均成績語句 發布:2025-07-05 02:11:41 瀏覽:277
java離線 發布:2025-07-05 02:11:35 瀏覽:66
php變數賦值給變數 發布:2025-07-05 02:10:56 瀏覽:558
javaequals方法 發布:2025-07-05 01:57:23 瀏覽:98
sqlsever外鍵 發布:2025-07-05 01:41:04 瀏覽:738
鳳凰衛士加密軟體 發布:2025-07-05 01:39:36 瀏覽:636
桌面軟體編程 發布:2025-07-05 01:32:17 瀏覽:993
編譯後的程序叫啥擴展名是啥 發布:2025-07-05 01:18:29 瀏覽:165
強轉編程 發布:2025-07-05 01:09:50 瀏覽:886