Linux通訊端編程之通訊端選項

通訊端機制提供了兩個通訊端選項介面來控制通訊端的行為。一個介面用來設定選項,另外一個介面用來允許我們請求選項的狀態。我們可以獲得以及設定三種類型的選項。1.通用選項,可以工作在所有的通訊端類型。2.在通訊端層次上面進行管理的選項,但是依賴底部協議的支援。3.和每個協議相關的協議選項。Single UNIX Specification 只定義了通訊端層的選項(上面所提到的前面兩項)我們可以通過setsockopt函數來設定通訊端選項。#include <sys/socket.h>int

Linux socket編程:addrinfo結構體與getaddrinfo函數

1. 概述IPv4中使用gethostbyname()函數完成主機名稱到位址解析,這個函數僅僅支援IPv4,且不允許調用者指定所需地址類型的任何資訊,返回的結構只包含了用於儲存IPv4地址的空間。IPv6中引入了getaddrinfo()的新API,它是協議無關的,既可用於IPv4也可用於IPv6。getaddrinfo函數能夠處理名字到地址以及服務到連接埠這兩種轉換,返回的是一個addrinfo的結構(列表)指標而不是一個地址清單。這些addrinfo結構隨後可由套介面函數直接使用。如此以來,

Linux中的popen-pclose簡介

popenLinux C進程I/O函數,與pclose函數一起使用。表標頭檔#include <stdio.h>函數定義FILE * popen ( const char * command , const char * type );int pclose ( FILE * stream );函數說明popen() 函數通過建立一個管道,調用 fork 產生一個子進程,執行一個 shell 以運行命令來開啟一個進程。這個進程必須由 pclose() 函數關閉,而不是 fclose()

Linux下的多進程間共用資源的互斥訪問

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/mman.h> #include <pthread.h> pthread_mutex_t* g_mutex; //建立共用的mutex void init_mutex(void) {

Linux線程同步之遞迴鎖

概述最常見的進程/線程的同步方法有互斥鎖(或稱互斥量Mutex),讀寫鎖(rdlock),條件變數(cond),訊號量(Semophore)等。在Windows系統中,臨界區(Critical Section)和事件對象(Event)也是常用的同步方法。簡單的說,互斥鎖保護了一個臨界區,在這個臨界區中,一次最多隻能進入一個線程。如果有多個進程在同一個臨界區內活動,就有可能產生競態條件(race

Linux線程簡介

進程是程式執行時的一個執行個體,即它是程式已經執行到何種程度的資料結構的彙集。從核心的觀點看,進程的目的就是擔當分配系統資源(CPU時間、記憶體等)的基本單位。線程是進程的一個執行流,是CPU調度和指派的基本單位,它是比進程更小的能獨立啟動並執行基本單位。一個進程由幾個線程組成(擁有很多相對獨立的執行流的使用者程式共用應用程式的大部分資料結構),線程與同屬一個進程的其他的線程共用進程所擁有的全部資源。"進程——資源分派的最小單位,線程——

linux中wait與waitpid的差別

zombie不佔用記憶體也不佔用CPU,表面上我們可以不用在乎它們的存在,然而事實上UNIX系統限制了某一時刻能同時存在的進程的最大數目。如果程式不及時清理系統中的zombie,最終會導致進程數過多,當再次需要產生新進程時就會出錯。鑒於上邊的原因,我們需要在子進程調用exit後在父進成中調用wait或waipid#include<sys/types.h>#include<sys/wait.h>pid_t wait(int &statloc);pid_t

用命令查看Linux支援的訊號列表

我們運行如下命令,可看到Linux支援的訊號列表:$ kill -l1) SIGHUP        2) SIGINT        3) SIGQUIT       4) SIGILL 5) SIGTRAP       6) SIGABRT       7) SIGBUS      

Linux中system函數的實現

#include <errno.h> #include <signal.h> #include <unistd.h> intsystem(const char *cmdstring) /* with appropriate signal handling */{ pid_t pid; int status; struct sigaction

簡介Linux中的可重新進入函數和不可重新進入函數

可重新進入函數可重新進入函數(即可以被中斷的函數)可以被一個以上的任務調用,而不擔心資料破壞。可重新進入函數在任何時候都可以被中斷,而一段時間之後又可以恢複運行,而相應的資料不會破壞或者丟失。可重新進入函數使用的變數有兩種情況:1.使用局部變數,變數儲存在CPU寄存器中或者堆棧中;2.使用全域變數,但是這時候要注意保護全域變數(防止任務中斷後被其它任務改變變數)。void strcpy(*dest,*src){ while(* dest++ = *src ++){;} *dest =

linux中exit()和_exit()函數的作用

exit和_exit函數都是用來終止進程的。當程式執行到exit或_exit時,系統無條件的停止剩下所有操作, 清除包括PCB在內的各種資料結構,並終止本進程的運行。但是,這兩個函數是有區別的。exit()函數的作用是:直接使用進程停止運行,清除其使用的記憶體空間,並清除其在核心中的各種資料 結構;_exit()函數則在這一基礎上做了一些封裝。在執行退出之前加了若干道工序。exit()函數與_exit()函

如何在linux下查看和添加PATH環境變數

$PATH:決定了shell將到哪些目錄中尋找命令或程式,PATH的值是一系列目錄,當您運行一個程式時, Linux在這些目錄下進行搜尋編譯連結。編輯你的 PATH 聲明,其格式為:PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>你可 以自己加上指定的路徑,中間用冒號隔開。環境變數更改後,在使用者下次登陸時生效,如果想立刻生效,則可 執行下面的語句:$ source

linux系統調用和庫函數調用的區別

1、系統調用系統調用提供的函數如open, close, read, write, ioctl等,需包含標頭檔unistd.h 。以write為例:其函數原型為 size_t write(int fd, const void *buf, size_t nbytes),其操作對象為文 件描述符或檔案控制代碼fd(file descriptor),要想寫一個檔案,必須先以可寫入權限用open系統調用開啟一個文 件,獲得所開啟檔案的fd,例如

圖文詳解Linux檔案系統的目錄結構

1. / 檔案系統的入口,最高一級目錄;2. /bin 基礎系統所需要的命令位於此目錄,是最小系統 所需要的命令,如:ls, cp, mkdir等。這個目錄中的檔案都是可執行檔,一般的使用者都可以使用。3. /boot 包含Linux核心及系統引導程式所需要的檔案,比如 vmlinuz initrd.img 檔案都位於這個 目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄;4. /dev 裝置檔案儲存體目錄, 比如音效卡、磁碟... ...

簡介Linux下的檔案描述符

在C程式中,檔案由檔案指標或者檔案描述符表示。ISO C的標準I/0庫函數(fopen, fclose, fread, fwrite, fscanf, fprintf等)使用檔案指標,UNIX的I/O函數(open, close, read, write, ioctl)使用文 件描述符。下面重點來說下,檔案描述符是如何工作的。檔案描述符相當於一個邏輯控制代碼,而 open,close等函數則是將檔案或者物理裝置與控制代碼相關聯。控制代碼是一個整數,可以理解為進程特定的檔案描述 符表的

linux下signal()函數詳解

首先說明函數指標的定義形式:<儲存類型> 資料類型 (* 函數指標名) (參數表);其中儲存類型一般不寫,用預設形式。可以選auto型、static型和extern型等。資料類型是指標所指向函數傳回值的資料類型。參數表是指向函數的參數表。再說明一個函數的傳回值是一個函數指標(可理解為此函數A實際返回的是一個指向另一個函數B的指標)的定義形式:<儲存類型> 資料類型 (* 函數名(參數表1))(參數表2);表標頭檔 #include<signal.h>功

Linux中用於進程式控制制的exec函數族

1、簡介在Linux中,並不存在exec()函數,exec指的是一組函數,一共有6個,分別是:#include <unistd.h>extern char **environ;int execl(const char *path, const char *arg, ...);int execlp(const char *file, const char *arg, ...);int execle(const char *path, const char *arg, ..., char *

Unix/Linux中實際使用者ID,有效使用者ID與儲存設定使用者ID

real user ID:實際使用者ID,指的是進程執行者是誰effective user ID:有效使用者ID,指進程執行時對檔案的存取權限saved set-user-ID:儲存設定使用者ID,作為effective user ID的副本,在執行exec調用時後能重新恢複原來的effectiv user ID.上面這三個ID是相對於進程而言的.set-user-ID:設定使用者ID,這是相對於檔案來說的.設定了set-user-ID位的可執行程式,執行時,進程的effective user

Linux下使用GDB詳解

一、GDB的靜態調試啟動方法:1、當需要在命令列通過gdb來啟動可執行程式的時候,可使用一下命令:gdb <可執行程式名>這個時候gdb會載入可執行程式的符號表和堆棧,並為啟動程式作好準備;接下來,需要設定可執行程式的命令列參數:set args <參數列表>然後設定斷點: b或break;最後通過命令r或run來啟動程式,或者通過c或continue命令來繼續已經被暫停程式;2、當程式core的時候,需要查看core檔案的內容,顆使用以下方式:gdb <可執行程式名>

與Linux密碼密切相關的兩個檔案

一:關於/etc/passwd:關於/etc/passwd的內容理解在/etc/passwd 中,每一行都表示的是一個使用者的資訊;一行有7個段位;每個段位用:號分割,比如下面是我的系統中的/etc/passwd 的兩行;beinan:x:500:500:beinan sun:/home/beinan:/bin/bashlinuxsir:x:505:502:linuxsir open,linuxsir

總頁數: 3662 1 .... 1326 1327 1328 1329 1330 .... 3662 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.