導航:首頁 > 操作系統 > linux常用c函數

linux常用c函數

發布時間:2022-09-13 17:29:00

『壹』 linux內核中prink函數和C中常用的printf函數的區別是什麼

printk() 和 printf() 幾乎沒有什麼兩樣, 唯一的差別是 printk() 會把輸出的結果,送到內核的環緩沖區 (ring buffer)裡面。這個緩沖區是系統所有信息集中的地方,就像開機時所看到的信息,都可以在這個環緩沖區找到。 任何時候, 我們都可以用 dmseg 命令查看環緩沖區的內容, 或是直接檢驗 /proc/kmsg 這個文件。

『貳』 linux下C語中用到的線程編程函數

[desktop:~]$ man pthread_mutex
pthread_mutexattr_destroy pthread_mutexattr_settype
pthread_mutexattr_getprioceiling pthread_mutex_destroy
pthread_mutexattr_getprotocol pthread_mutex_getprioceiling
pthread_mutexattr_getpshared pthread_mutex_init
pthread_mutexattr_gettype pthread_mutex_lock
pthread_mutexattr_init pthread_mutex_setprioceiling
pthread_mutexattr_setprioceiling pthread_mutex_timedlock
pthread_mutexattr_setprotocol pthread_mutex_trylock
pthread_mutexattr_setpshared pthread_mutex_unlock

用manpages一下都能查出來。

『叄』 linux下c語言環境變數操作的幾個相關函數

這幾個函數的原型在<stdio.h>中定義

/* Return the value of envariable NAME, or NULL if it doesn't exist. */
extern char *getenv (__const char *__name) __THROW __nonnull ((1)) __wur;

/* The SVID says this is in <stdio.h>, but this seems a better place. */
/* Put STRING, which is of the form "NAME=VALUE", in the environment.
If there is no `=', remove NAME from the environment. */
extern int putenv (char *__string) __THROW __nonnull ((1));

/* Set NAME to VALUE in the environment.
If REPLACE is nonzero, overwrite an existing value. */
extern int setenv (__const char *__name, __const char *__value, int __replace)
__THROW __nonnull ((2));

/* Remove the variable NAME from the environment. */
extern int unsetenv (__const char *__name) __THROW __nonnull ((1));

『肆』 send的Linux C 函數

經套接字傳送消息
相關函數
sendto,sendmsg,recv,recvfrom,recvmsg,socket
表頭文件
#include < sys/socket.h >
定義函數
ssize_t send (int s,const void *msg,size_t len,int flags);
參數說明
第一個參數指定發送端套接字描述符;
第二個參數指明一個存放應用程式要發送數據的緩沖區;
第三個參數指明實際要發送的數據的字元數;
第四個參數一般置0。
函數說明
send() 用來將數據由指定的 socket 傳給對方主機。使用 send 時套接字必須已經連接。send 不包含傳送失敗的提示信息,如果檢測到本地錯誤將返回-1。因此,如果send 成功返回,並不必然表示連接另一端的進程接收數據。所保證的僅是當send 成功返回時,數據已經無錯誤地發送到網路上。
對於支持為報文設限的協議,如果單個報文超過協議所支持的最大尺寸,send 失敗並將 errno 設為 EMSGSIZE ;對於位元組流協議,send 會阻塞直到整個數據被傳輸。
flags 參數有如下的選擇:
MSG_DONTROUTE 勿將數據路由出本地網路
MSG_DONTWAIT 允許非阻塞操作(等價於使用O_NONBLOCK)
MSG_EOR 如果協議支持,此為記錄結束
MSG_OOB 如果協議支持,發送帶外數據
MSG_NOSIGNAL 禁止向系統發送異常信息
返回值
成功則返回實際傳送出去的字元數,失敗返回-1,錯誤原因存於errno 中。
錯誤代碼
EBADF 參數 s 非法的 socket 處理代碼。
EFAULT 參數中有一指針指向無法存取的內存空間。
WNOTSOCK 參數 s 為一文件描述詞,非 socket。
EINTR 被信號所中斷。
EAGAIN 此動作會令進程阻斷,但參數 s 的 socket 為不可阻斷的。
ENOBUFS 系統的緩沖內存不足。
EINVAL 傳給系統調用的參數不正確。

『伍』 linux下c編程有多少個常用函數

編程領域涵蓋方方面面,常用的函數根據你在哪個領域應用較多而定。

『陸』 求linux下復制文件到其他目錄的c語言庫函數

如果必須用函數實現的話,基本思路如下:
1. fopen已知文件,把內容讀到buffer(char [])中去(fread), fclose當前文件
2. fopen新文件(用新名字)在目錄1中,把buffer內容寫入新文件(fwrite),fclose之
3. 重復第2步,只是換成目錄2

注意,也可用open/read/write,但fopen/fread/fwrite是更常用更符合C標准庫更容易移植的版本。

『柒』 Linux中C語言處理動態內存分配的函數有那些

動態內存分配即分配內存大小在運行時才確定,一般在堆中分配。C語言動態內存分配相關的函數。
malloc

#include <stdlib.h>
void * malloc (size_t size);
malloc的使用比較直接,一個成功的malloc調用返回分配的size大小的內存的指針。失敗時返回NULL並將錯誤代碼置為ENOMEM。
教材中經常出現的用法是將malloc返回的void指針進行強制內存轉換然後賦給內存指針,其實是不必要的,在賦值時C語言是可以將void類型指針自動轉換成對應的指針的。
calloc

#include <stdlib.h>
void * calloc (size_t nr, size_t size);
calloc可以分配nr個size大小的內存空間,一般用於一組struct結構體的分配。
那麼calloc和malloc有什麼區別呢?拋開nr參數不談(malloc也可以將參數設置為nr*size達到一樣的效果),最關鍵的區別是malloc分配的內存是不保證初始化的,而calloc會將分配的內存都初始化為0.
realloc

#include <stdlib.h>
void * realloc (void *ptr, size_t size);
realloc函數將ptr指向的內存空間重新分配大小為size並返回新的內存首地址。具體的實現,函數首先會嘗試直接在已經分配的內存後進行padding,如果空間足夠那麼還是返回原來的地址,如果不夠,則會尋找新的空間並malloc size個位元組,之後再將原先的內容「搬家」到新的內存地址,所以函數的返回值可能和原指針相同,也可能不同。
另外,size參數如果是0,則該函數和free效果相同。如果ptr是NULL,函數的效果和malloc相同~
free

#include <stdlib.h>
void free (void *ptr);
釋放前三個函數申請的內存空間。關於free最經典的問題就是內存泄露(memory leak)。所以,使用前三個分配函數分配的內存一定要記得free掉。

『捌』 Linux中C語言的一個函數的源代碼:socket 編程中的 recv() 函數。

1、recv是socket編程中最常用的函數之一,在阻塞狀態的recv有時候會返回不同的值,而對於錯誤值也有相應的錯誤碼,分別對應不同的狀態。
2、recv函數只是在用戶空間定義的。內核空間有與之對應的函數,也就是說,執行recv函數就會調用到內核中與它對應的函數,實際起作用的就是內核里的這個函數。至於內核里調用的是那個函數,內核里的調用關系復雜的很,除非對內核非常了解的,才會找到到底是怎麼調用的,他也是只是找到怎麼調用的。

『玖』 linux系統調用 shell命令 c庫函數怎麼區分

首先,命令應該是好和其他兩個區分開來的了,因為命令都是可以直接敲在shell上面回車執行的,而系統調用和庫函數都不行;
其次,Linux系統調用和C庫函數都是函數的形式,即都是「func(args)」的形式,但系統調用是
由系統內核對外提供的服務介面;C庫函數和你自己寫的普通的函數沒有本質的區別,只是在C標准庫中而已,Linux上面glibc就是C函數庫。從表面上看兩者不太好區分,不過,你可以從它們需要包含的頭文件來區分,C庫函數像printf在
中,std就是標准(standard)的縮寫形式,因此在
中的函數,基本都是C庫函數;像
ssize_t
read(int
fd,
void
*buf,
size_t
count);這樣很多的系統調用是包含在
中的,unistd意思是UNIX
Standard,從這個意義就可以區分了。
希望對你有所幫助,如還有問題,可隨時聯系我:-)

『拾』 Linux C write函數

好隱蔽的一個錯誤!! if ((fd=open(pathname, FLAGS, MODE)==-1)) 這句,括弧的位置錯誤了
應該是: if ( (fd=open(pathname, FLAGS, MODE))==-1)
原寫法,導致fd值為0,成了標准輸入(終端)了,所以,lseek就會一直報錯!

閱讀全文

與linux常用c函數相關的資料

熱點內容
數據中心pdf 瀏覽:524
crf源碼解析 瀏覽:853
伺服器軟體開發是什麼意思 瀏覽:941
刪除彩信android 瀏覽:862
元宵節猜燈謎h5源碼 瀏覽:69
樂培生app怎麼綁定 瀏覽:762
視頻壓縮不清楚怎麼說 瀏覽:525
加好友伺服器繁忙是怎麼回事 瀏覽:381
怎麼解綁app的支付寶賬號 瀏覽:911
ip地址伺服器不可用怎麼解決方法 瀏覽:183
為什麼軟體需要伺服器 瀏覽:63
redis操作命令大全 瀏覽:597
python字元串重復索引 瀏覽:961
為什麼香信新版本連接不上伺服器 瀏覽:50
元旦程序員打羽毛球 瀏覽:614
otc焊接機器人離線編程教學 瀏覽:412
51單片機的ea引腳有何用途 瀏覽:207
centos查看用戶命令 瀏覽:840
程序員臉胖 瀏覽:744
hdfs在主目錄下創建文件夾 瀏覽:800