Linux下send、sendto、sendmsg函式分析
to:指向存放接收端地址的區域,可以為NULL。
tolen:以上記憶體區的長度,可以為0。
msg:指向存放傳送訊息頭的記憶體緩衝,結構形態如下
struct msghdr {
void *msg_name;
socklen_t msg_namelen;
struct iovec *msg_iov;
size_t msg_iovlen;
void *msg_control;
socklen_t msg_controllen;
int msg_flags;
};
可能用到的資料結構有
struct cmsghdr {
socklen_t cmsg_len;
int cmsg_level;
int cmsg_type;
};
返回說明:
成功執行時,返回已傳送的位元組數。失敗返回-1,errno被設為以下的某個值
EACCES:對於Unix域套接字,不允許對目標套接字檔案進行寫,或者路徑前驅的一個目錄節點不可搜尋
EAGAIN,EWOULDBLOCK: 套接字已標記為非阻塞,而傳送操作被阻塞
EBADF:sock不是有效的描述詞
ECONNRESET:連線被使用者重置
EDESTADDRREQ:套接字不處於連線模式,沒有指定對端地址
EFAULT:記憶體空間訪問出錯
EINTR:操作被訊號中斷
EINVAL:引數無效
EISCONN:基於連線的套接字已被連線上,同時指定接收物件
EMSGSIZE:訊息太大
ENOMEM:記憶體不足
ENOTCONN:套接字尚未連線,目標沒有給出
ENOTSOCK:sock索引的不是套接字
EPIPE:本地連線已關閉
相關推薦
Linux下send、sendto、sendmsg函式分析
to:指向存放接收端地址的區域,可以為NULL。 tolen:以上記憶體區的長度,可以為0。 msg:指向存放傳送訊息頭的記憶體緩衝,結構形態如下 struct msghdr { void *msg_name; socklen_t msg_namele
阻塞模式和非阻塞模式下send、sendto、recv、recvfrom的表現
首先socket在預設情況下是阻塞狀態的(未指非同步操作以及其它一些特殊用途下,直接預設為非阻塞),這就使得傳送以及接收操作處於阻塞的狀態,即呼叫不會立即返回,而是進入睡眠等待操作完成。下面把討論點分為傳送以及接收。 一.傳送選用send(這裡特指TCP)以及sendto(
Linux下用戶組、文件權限詳解
目錄 管理權限 權限不足 日期 查看 add 綜合案例 天然 width 在linux中的每個用戶必須屬於一個組,不能獨立於組外。在linux中每個文件有所有者、所在組、其它組的概念 - 所有者 - 所在組 - 其它組 - 改變用戶所在的組 所有者 一般為文件的創建者,
Linux下的之touch、mv、cp、rm
linux touch mv cp rm touch 新建文件 touch 文件名 例如: touch file1 在當前目錄新建名為file1的文件 註意: 1)同一目錄無法創建同名的文件 2)Linux的文件名是區分大小寫的 mv 修改文件名(或者目錄的名
linux下的權限、特殊權限、acl
權限 suid sgid acl 首先,我們都知道Linux是一個多用戶操作系統,那麽問題就來了,假設我有一個文件叫file1,這個文件是用戶user1的,user1有一個項目組g1,他希望他項目組裏的同事可以查看修改這個文件,但是不希望其他人看到文件中的內容當然也不能編輯。那怎麽解決這個問題
Linux下Tomcat的啟動、關閉
lpad ade web dir xms 僵屍 fun table linux下 在Linux系統下,啟動和關閉Tomcat使用命令操作。 進入Tomcat下的bin目錄 1 cd /java/tomcat/bin 啟動Tomcat命令
Linux下ElasticSearch6.4.x、ElasticSearch-Head、Kibana以及中文分詞器IK的安裝配置
ElasticSearch 安裝配置 下載 # 官網下載壓縮包 [[email protected] /home]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.
Linux下java獲取CPU、記憶體、磁碟IO、網路頻寬使用率
原文地址:https://www.cnblogs.com/gisblogs/p/3985393.html 一、CPU 使用proc檔案系統,"proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過p
Linux下Tomcat的安裝、啟動、關閉以及配置檔案的修改
安裝 前往tomcat官網https://tomcat.apache.org下載需要的版本。下面以 tomcat8 為例,下載過程如下: 設tomcat安裝包所在目錄為tomcat_download,使用如下命令解壓到資料夾中即完成安裝: tar -xvzf apache-
linux下c程式 daemon、fork與建立pthread的順序問題
近期發如今寫linux c服務程式的時候,daemon與執行緒建立之間出現故障。發現程式在daemon之後,起的執行緒就全掛了。 查過一些文件之後,最終知道了why. daemon函式的操作事實上非常easy, 1.fork一個程序,2.處理
Centons7下安裝配置Flume、Linux下安裝配置Flume、Flume的簡單使用示例、Flume整合Kafka使用
本篇文章主要介紹在windows下使用vmware虛擬機器中的Linux(Centons7)下配置安裝Flume。 目前Flume 的最新版本為1.8,筆者安裝的是1.6,是Flume的一個經典版本,通常在生產環境中使用的就是這個版本,在安裝Flume前,看先它的前置條件 (1)
Linux下檢視記憶體型號、主機板、硬碟等等
首先檢視是否安裝了dmidecode工具 [[email protected] ~]# dmidecode Linux 檢視記憶體的插槽數,已經使用多少插槽.每條記憶體多大: [[email protected] ~]# dmidecode|grep -
Linux下檔案解壓縮、軟體安裝
1、linux常用解壓縮命令:.zip格式 解壓:unzip 檔名.zip 壓縮:zip 檔名.zip 目錄名 .tar格式 壓縮:tar cvf 檔名.tar 檔名
LINUX下安裝Python3.7、Pycharm[Linux命令記錄]
有道 空白 命令格式 type 活動 user 界面 org n天前 環境 阿裏雲CenterOs7.4 64位 + Python3.7.0 + pycharm-professional-2018.3 安裝Python 1. 安裝依賴包 sudo yum -y g
Linux下將檔案打包、壓縮並分割成指定大小
轉自https://blog.csdn.net/loongembedded/article/details/54233175 Linux解壓檔案時遇到的問題,不知道總的資料是分了好多份,需要輸入命令統一解壓 1、普通tar壓縮命令 tar -zcvf
.Neter玩轉Linux系列之六:Linux下MySQL的安裝、配置、使用
基礎篇 實戰篇 一、Linux安裝MySQL (1)下載安裝包:https://dev.mysql.com/downloads/mysql/ (2)解壓並安裝 命令:tar zxvf 檔名 解壓完成之後,重名一下資料夾名字。 命令:mv 檔名1
在linux下檢視核心版本、gcc版本、作業系統多少位等引數
1. 檢視linux版本 cat/etc/issueLinaro 12.07 \n \l 2. 檢視核心版本 1)cat/proc/versionLinux version 2.6.38-13-generic([email protected]) (gcc version 4.5.2 (Ubunt
Linux下Tomcat的啟動、關閉、殺死程序
開啟終端cd /java/tomcat#執行bin/startup.sh #啟動tomcatbin/shutdown.sh #停止tomcattail -f logs/catalina.out #看tomcat的控制檯輸出; #看是否已經有tomcat在運行了ps -ef |
Linux下MySQL 5.5、5.6和5.7的RPM、二進位制和原始碼安裝(下)
[[email protected] ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_rootlhr-Vol00 9.9
Linux下對檔案建立、修改、訪問時間的一些操作
學習,stat,lstat,fstat 1 函式都是獲取檔案(普通檔案,目錄,管道,socket,字元,塊()的屬性。 函式原型 #include <sys/stat.h> int stat(const char *restrict pathname, str