欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Unix常用函數總結

函數名: fgets
功 能: 從流中讀取一字符串
頭文件: #include<stdio.h>
用 法: char * fgets(char * buf, int num, FILE * stream);
NOTE : 按回車(chē)將觸發(fā)fgets從文件接受字符串到buf緩沖區,最大接受字符數為num,且其自動(dòng)將'\0'填充到接受到的字符緩沖區中, '\0'包含在num指定的字符數目中.

函數名: fputs
功 能: 送一個(gè)字符串到一個(gè)流中
頭文件: #include<stdio.h>
用 法: int fputs(char * string, FILE * stream);


unix小知識:對設備文件 /dev/tty 讀,相當于讀鍵盤(pán)輸入;對其寫(xiě),相當于輸出到屏幕

函數名: open
功 能: 打開(kāi)一個(gè)文件用于讀或寫(xiě)
頭文件: #include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
用 法: int open(char * pathname, int how); //how 為 O_RDONLY , O_WRONLY, O_RDWR

函數名: read
功 能: 從文件中讀
頭文件: #include<unistd.h>
用 法: int read(int fd, void *buf, int nbyte);

函數名: write
功 能: 寫(xiě)到一文件中
頭文件: #include<unistd.h>
用 法: int write(int fd, void *buf, int nbyte);

函數名: close
功 能: 關(guān)閉文件句柄
頭文件: #include<unistd.h>
用 法: int close(int fd);

unix小知識:
1. /var/adm/utmp 保存了所有用戶(hù)的登陸信息,其信息結構描述是在/usr/include/utmp.h中描述,可以用UTMP_FILE代指utmp文件的路徑,因為在utmp.h中用宏定義了#define UTMP_FILE "/var/adm/utmp"

2.utmp結構體類(lèi)型中有個(gè)ut_type字段,其含義為用戶(hù)是否已登陸,若其值為7(#define USER_PROCESS 7),則代表該用戶(hù)已登陸。

3.在/usr/include/time.h中時(shí)間類(lèi)型的定義為(typedef long int time_h;),則隱含時(shí)間是個(gè)長(cháng)整型的類(lèi)型,在unix中有一個(gè)函數ctime()可以將整數值的時(shí)間轉化為人們日常所使用的時(shí)間形式(如: Jun 30 21:49:08 1993)其聲明如下:

函數名: ctime
功 能: 把日期和時(shí)間轉換為字符串
頭文件: #include<time.h>
用 法: char *ctime(const time_t *time);

函數名: creat
功 能: 創(chuàng )建一個(gè)新文件,如果這個(gè)文件不存在,就創(chuàng )建它,如果已經(jīng)存在,就把它的內容清空,把文件的長(cháng)度設置為0
頭文件: #include<fcntl.h>
返回值: 返回值是個(gè)整數fd,如果成功則返回文件的描述符,如果失敗則返回-1
用 法: int creat (const char *filename, int permiss);
permiss:為9段的文件允許位(rwxr--r--之類(lèi)的),可用三個(gè)八進(jìn)制數代替如(0644,0代表644是個(gè)8進(jìn)制數)

unix小知識:umask命令可以更改文件"新建文件掩碼值",他指定哪些位需要被關(guān)閉.
例如: umask 022(----w--w-),就可以防止程序創(chuàng )建能被同組用戶(hù)和其他用戶(hù)修改的文件.


函數名: write
功 能: 將內存中的數據寫(xiě)入文件
頭文件: #include<unistd.h>
返回值: 遇到錯誤返回-1 ,成功寫(xiě)入返回 number written
用 法: int write(int fd, void *buf, int nbyte);

函數名: lseek
功 能: 移動(dòng)文件讀/寫(xiě)指針
頭文件: #include<sys/type.h>
#include<unistd.h>
用 法: long lseek(int fd, off_t offset, int base);
返回值: 遇到錯誤(-1),指針變化前的位置(oldpos)
base:有三種選擇SEEK_SET(文件開(kāi)始),SEEK_CUR(當前位置),SEEK_END(文件結尾)


unix小知識: 返回值-1表示系統調用在運行中出了些差錯,一旦檢測到錯誤必須做相應的處理
內核通過(guò)全局變量errno來(lái)指明錯誤的類(lèi)型,每個(gè)程序都可以訪(fǎng)問(wèn)到這個(gè)變量,可以通過(guò)
man 3 errno來(lái)查看出錯編號的含義


函數名: opendir
功 能: 打開(kāi)一個(gè)目錄
頭文件: #include<sys/types.h>
#include<dirent.h>
用 法: DIR * opendir(const char *name);

函數名: readdir
功 能: 讀目錄項的內容
頭文件: #include<sys/types.h>
#include<dirent.h>
用 法: struct dirent * readdir(DIR * dir);
返回值: 返回一個(gè)目錄項的首地址
struct dirent{
ino_t d_ino;
off_t d_off;
unsigned short d_reclen;
unsigned char d_type;
char d_name[256];
};


函數名: stat
功 能: 得到文件的屬性
頭文件: #include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
用 法: int stat(char *pathname, struct stat *buff);
返回值: -1遇到錯誤;0成功返回
struct stat {
              dev_t     st_dev;     /* ID of device containing file */
              ino_t     st_ino;     /* inode number */
              mode_t    st_mode;    /* protection */
              nlink_t   st_nlink;   /* number of hard links */
              uid_t     st_uid;     /* user ID of owner */
              gid_t     st_gid;     /* group ID of owner */
              dev_t     st_rdev;    /* device ID (if special file) */
              off_t     st_size;    /* total size, in bytes文件大小 */
              blksize_t st_blksize; /* blocksize for filesystem I/O */
              blkcnt_t st_blocks; /* number of blocks allocated */
              time_t    st_atime;   /* time of last access */
              time_t    st_mtime;   /* time of last modification */
              time_t    st_ctime;   /* time of last status change */
          };

函數名: sscanf
功 能: 執行從字符串中的格式化輸入
用 法: int sscanf(char *string, char *format, ... );


unix小知識: 若要找某個(gè)數據結構的定義,可以在shell下輸入man -k <關(guān)鍵字>


函數名: getpwuid
功 能: 使用uid(user ID)作為參數返回一個(gè)指向struct passwd的指針
頭文件: #include<sys/types.h>
#include<pwd.h>
用 法: struct passwd * getpwuid(uid_t uid);
返回值: 出錯則返回NULL,成功則返回指向struct passwd的指針

/* The passwd structure. */
struct passwd
{
char *pw_name;   /* Username. */
char *pw_passwd;   /* Password. */
__uid_t pw_uid;   /* User ID. */
__gid_t pw_gid;   /* Group ID. */
char *pw_gecos;   /* Real name. */
char *pw_dir;    /* Home directory. */
char *pw_shell;   /* Shell program. */
};

函數名: getgrgid
功 能: 使用gid(group ID)作為參數返回一個(gè)指向struct group的指針
頭文件: #include<sys/types.h>
#include<grp.h>
用 法: struct group * getgrgid(gid_t gid);
返回值: 出錯則返回NULL,成功則返回指向struct group的指針

/* The group structure. */
struct group
{
    char *gr_name;   /* Group name. */
    char *gr_passwd;   /* Password. */
    __gid_t gr_gid;   /* Group ID. */
    char **gr_mem;   /* Member list. */
};


函數名: chmod
功 能: 改變文件的訪(fǎng)問(wèn)模式(rwxrwxrwx)
頭文件: #include<sys/types.h>
#include<sys/stat.h>
用 法: int chmod(char * path,mode_t mode);
返回值: -1遇到錯誤,0成功返回,此系統調用不受"新建文件掩碼"(umask)的影響
e.g. : chmod("/tmp/myfile",04764);


函數名: chown
功 能: 改變文件的訪(fǎng)問(wèn)模式(rwxrwxrwx)
頭文件: #include<unistd.h>
用 法: int chown(char * path,uid_t owner,gid_t group);
返回值: -1遇到錯誤,0成功返回,如果后兩個(gè)參數都為-1,那么文件所有者和組都不會(huì )改變。
文件所有者可以把文件的組改成任何一個(gè)他所屬的組。


函數名: utime
功 能: 修改文件最后修改時(shí)間和最后訪(fǎng)問(wèn)時(shí)間
頭文件: #include<sys/time.h>
#include<utime.h>
#include<sys/types.h>
用 法: int utime(char * path,struct utimbuf * newtimes);
返回值: -1遇到錯誤,0成功返回

/* Structure describing file times. */
struct utimbuf
{
    __time_t actime;   /* Access time. */
    __time_t modtime;   /* Modification time. */
};

unix小知識: 用touch命令可以修改文件的最后訪(fǎng)問(wèn)時(shí)間和最后修改時(shí)間

函數名: rename
功 能: 修改文件/目錄的名字或移動(dòng)文件的位置
頭文件: #include<stdio.h>
用 法: int rename(char * old,char * new);
返回值: -1遇到錯誤,0成功返回
tips: 命令mv即調用此函數


函數名: mkdir
功 能: 創(chuàng )建一個(gè)目錄
頭文件: #include<sys/stat.h>
#include<sys/types.h>
用 法: int mkdir(const char * pathname,mode_t mode);
返回值: -1遇到錯誤,0成功返回
tips: mode 即為權限位的掩碼


函數名: rmdir
功 能: 刪除一個(gè)目錄,此目錄必須為空
頭文件: #include<unistd.h>
用 法: int rmdir(const char * path);
返回值: -1遇到錯誤,0成功返回
tips: path 即為目錄名,且這個(gè)目錄必須為空。如果這個(gè)目錄并未被其他的任何進(jìn)程占用,它的i節點(diǎn)和數據塊將被釋放。


函數名: unlink
功 能: 刪除一個(gè)鏈接(此處指的是硬鏈接)
頭文件: #include<unistd.h>
用 法: int unlink(const char * path);
返回值: -1遇到錯誤,0成功返回
tips: 命令rm即是調用此函數來(lái)刪除文件。unlink用來(lái)刪除目錄文件中的一個(gè)記錄,減少相應i節點(diǎn)的鏈接數。如果該i節點(diǎn)的鏈接數減為0,數據塊和i節點(diǎn)將被釋放。unlink不能被用來(lái)刪除目錄。


函數名: link
功 能: 創(chuàng )建一個(gè)文件的新鏈接(此處指的是硬鏈接)
頭文件: #include<unistd.h>
用 法: int link(const char * oldpath,const char * newpath);
返回值: -1遇到錯誤,0成功返回
tips: 命令ln即調用此函數。

函數名: chdir
功 能: 改變所調用進(jìn)程的當前目錄
頭文件: #include<unistd.h>
用 法: int chdir(const char * path);
返回值: -1遇到錯誤,0成功返回
tips: 命令cd即調用此函數。

函數名: strncpy
功 能: 串拷貝
用 法: char *strncpy(char * dest, char * src, int maxlen);
Note: 此串拷貝只是簡(jiǎn)單的按照maxlen規定從源串拷貝到目的串, 所以需要手動(dòng)將目的串后加'\0'


函數名: perror
功 能: 根據全局變量errno的值,打印一個(gè)系統錯誤消息
頭文件: #include<stdio.h>
#include<errno.h> //errno 的定義在此頭文件中
用 法: void perror(const char *s);
返回值: -1遇到錯誤,0成功返回
例如 : 若此時(shí)errno的值為10 ,則調用perror("hello!");后則屏幕輸出如下信息:
hello!: No child processes


函數名: symlink
功 能: 為原始文件創(chuàng )建一個(gè)符號鏈接
頭文件: #include<unistd.h>
用 法: int symlink(const char *path1,const char * path2);
返回值: -1遇到錯誤,0成功返回
NOTE : 注意path2為符號鏈接文件的路徑,path1為源文件的路徑
ln -s 即調用此函數


函數名: readlink
功 能: 讀取符號鏈接的值(其實(shí)就是讀取原始文件的路徑字符串)
頭文件: #include<unistd.h>
用 法: int readlink(const char * path,char * buf,size_t bufsiz);
返回值: 若成功則返回放到緩沖buf里的字符個(gè)數,若失敗則返回-1
NOTE : 此函數讀取符號鏈接字串的前bufsiz個(gè)字符,到緩沖buf中,且此函數并不會(huì )為保存到buf中的字符串后面添加'\0',需要你自己添加


unix小知識: man 命令可查找到很多有用的東西, 文檔1為命令部分,2為系統調用部分。3為標準C函數部分

///////////////////////////////////////////////////////////////////////////////////////
目前還不懂的地方:

1.設備文件的i節點(diǎn)存儲的是指向內核子程序的指針,而不是文件的大小和存儲列表。內核中傳輸設備數據的子程序被稱(chēng)為設備驅動(dòng)程序。

2.如用ls命令顯示但前終端文件的詳細信息有如下:
crw--w---- 1 root tty 136, 0 May 16 17:58 /dev/pts/0
其中的“136, 0” 表示的是 從終端進(jìn)行數據傳輸的代碼是在設備——進(jìn)程表中編號為136
的子程序。該子程序接受一個(gè)整形參數。在/dev/pts/0 中,參數是0 。136和0這兩個(gè)數被
稱(chēng)為設備的主設備號和次設備號。
主設備號確定處理該設備實(shí)際的子程序,
而從設備號被作為參數傳輸到該子程序。
3.每個(gè)i節點(diǎn)編號指向i節點(diǎn)表中的一個(gè)結構。i節點(diǎn)可以是磁盤(pán)文件的也可以是設備文件的。i節點(diǎn)的類(lèi)型被記錄在結構stat的成員變量st_mode的類(lèi)型區域中。
    磁盤(pán)文件的i節點(diǎn)包含指向數據塊的指針。設備文件的i節點(diǎn)包含指向內核子程序表的指針。主設備號用于告知從設備讀取數據的那部分代碼的位置。
   
///////////////////////////////////////////////////////////////////////////////////////

函數名: fcntl
功 能: 控制文件描述符
頭文件: #include<fcntl.h>
#include<unistd.h>
#include<sys/types.h>
用 法: int fcntl(int fd,int cmd);
int fcntl(int fd,int cmd,long arg);
int fcntl(int fd,int cmd,struct flock * lockp);
參數 : cmd需進(jìn)行的操作,arg操作的參數,lockp鎖信息
返回值: -1遇到錯誤,other 依操作而定

舉例:
1.關(guān)閉內核對fd描述符的緩沖機制

#include<fcntl.h>
int s;
s = fcntl(fd,F_GETFL);
s |= O_SYNC;
result = fcntl(fd,F_SETFL,s);
if( result == 1 )
perror("setting SYNC");

2.自動(dòng)添加模式(為了避免同一時(shí)刻兩個(gè)進(jìn)程對同一文件的操作,也即"競爭",內核提供了一個(gè)簡(jiǎn)單的解決辦法:自動(dòng)添加模式。當文件描述符的O_APPEND位被開(kāi)啟后,每個(gè)對write的調用自動(dòng)調用lseek將內容添加到文件末尾。)

#include<fcntl.h>
int s;
s = fcntl(fd,F_GETFL);
s |= O_APPEND;
result = fcntl(fd,F_SETFL,s);
if( result == 1 )
perror("setting APPEND");
else
write(fd,&rec,1);


unix小知識: 用open函數也可以控制文件描述符如:
     fd = open(WTMP_FILE,O_WRONLY | O_APPEND | O_SYNC);
open支持的其他標志位:
O_CREAT 如果不存在,創(chuàng )建該文件。
O_TRUNC 如果文件存在,將文件長(cháng)度置0
O_EXCL O_EXCL標志位防止兩個(gè)進(jìn)程創(chuàng )建同樣的文件。如果文件存在且O_EXCL被置位,則返   回-1.

unix命令:
stty命令可以讀取和修改驅動(dòng)程序的設置
stty 顯示終端配置信息
stty -all 顯示所有配置信息
stty -echo 消除鍵盤(pán)回顯 stty echo 打開(kāi)鍵盤(pán)回顯

函數名: tcgetattr
功 能: 讀取tty驅動(dòng)程序的屬性
頭文件: #include<termios.h>
#include<unistd.h>
用 法: int tcgetattr(int fd,struct termios * info);
返回值: -1遇到錯誤,0成功返回
NOTE : info指向終端結構的指針


函數名: tcsetattr
功 能: 設置tty驅動(dòng)程序的屬性
頭文件: #include<termios.h>
#include<unistd.h>
用 法: int tcsetattr(int fd,int when,struct termios * info);
返回值: -1遇到錯誤,0成功返回
NOTE : info指向終端結構的指針,when改變設置的時(shí)間

when的允許值如下:
(1)TCSANOW 立即更新驅動(dòng)程序設置
(2)TCSADRAIN 和 TCSAFLUSH 等等

struct termio
{
unsigned short c_iflag; /* 輸入模式標志 */
unsigned short c_oflag; /* 輸出模式標志 */
unsigned short c_cflag; /* 控制模式標志*/
unsigned short c_lflag; /* local mode flags */
unsigned char c_line; /* line discipline */
unsigned char c_cc[NCC]; /* control characters */
};

小知識: 若要查找termios中的域變量的詳細用法請參考man tcgetattr

例子 : 以下代碼為一個(gè)連接開(kāi)啟字符回顯
#include<termios.h>
struct termios settings;
tcgetattr(fd,&settings);
settings.c_lflag |= ECHO;
tcsetattr(fd,TCSANOW,&settings);


函數名: ioctl
功 能: 控制一個(gè)設備
頭文件: #include<sys/ioctl.h>
用 法: int ioctl(int fd,int operation [,arg ...]);
返回值: -1遇到錯誤,other依錯誤而定
NOTE : operation需進(jìn)行的操作,操作所需的參數

緩沖和編輯包含規范處理(canonical processing)。當這些特征被啟動(dòng)時(shí),終端連接被稱(chēng)為處于規范模式。

函數名: strchr
頭文件: #include<string.h>
功 能: 在一個(gè)串中查找給定字符的第一個(gè)匹配之處
用 法: char * strchr(char *str, char c);
返回值: 返回字符串中第一個(gè)匹配字符的地址


函數名: signal
功 能: 簡(jiǎn)單的信號處理
頭文件: #include<signal.h>
用 法: int signal(int signum,void (* action)(int) );
返回值: -1遇到錯誤,prevaction 成功返回
NOTE : SIG_IGN 忽略信號 SIG_DFL 將信號恢復為默認處理


函數名: alarm
功 能: 設置發(fā)送信號的計時(shí)器
頭文件: #include<unistd.h>
用 法: unsigned old = alarm(unsigned seconds);
返回值: -1遇到錯誤,old 計時(shí)器剩余時(shí)間
說(shuō) 明: alarm設置本進(jìn)程的計時(shí)器到seconds秒后激發(fā)信號。當設定的時(shí)間過(guò)去后,內核發(fā)送SIGALRM到這個(gè)進(jìn)程。如果計時(shí)器已被,alarm返回剩余秒數(注意: 調用alarm(0)意味著(zhù)關(guān)掉鬧鐘)


函數名: pause
功 能: 等待信號
頭文件: #include<unistd.h>
用 法: result = pause();
返回值: 總是-1

***************************************************************************************
         * 以下為網(wǎng)絡(luò )函數 *      
***************************************************************************************

函數名: htonl
htons
功 能: 主機字節序到網(wǎng)絡(luò )字節序的轉化
頭文件: #include<netient/in.h>
用 法: unsigned long int htonl(unsigned long int hostlong);
unsigned short int htons(unsigned short int hostshort);
返回值: 按照網(wǎng)絡(luò )字節順序的值


函數名: ntohl
ntohs
功 能: 網(wǎng)絡(luò )字節序到主機字節序的轉化
頭文件: #include<netient/in.h>
用 法: unsigned long int ntohl(unsigned long int netlong);
unsigned short int ntohs(unsigned short int netshort);
返回值: 按照主機字節順序的值


函數名: inet_aton
功 能: 點(diǎn)分十進(jìn)制字符串到32位的IP地址(此IP地址為網(wǎng)絡(luò )字節序)
頭文件: #include<arpa/inet.h>
用 法: int inet_aton(const char * cp,struct in_addr * inp);
返回值: 若成功則返回1,出錯則返回0

IP地址結構體的定義:
/* Internet address structure */
struct in_addr {
unsigned int s_addr; /* network byte order(big-endian) */
};


函數名: inet_ntoa
功 能: 32位的IP地址(此IP地址為網(wǎng)絡(luò )字節序)到點(diǎn)分十進(jìn)制字符串
頭文件: #include<arpa/inet.h>
用 法: char * inet_ntoa(strct in_addr in);
返回值: 指向點(diǎn)分十進(jìn)制的字符串的首地址

函數名: gethostbyname
功 能: 由主機名(hostname)得到hostent結構體信息的首地址(其定義如下)
頭文件: #include<netdb.h>
用 法: struct hostent * gethostbyname(const char * name);
返回值: 若成功則返回得到的hostent結構的首地址,出錯則返回NULL指針,同時(shí)置h_errno

函數名: gethostbyaddr
功 能: 由32位的IP地址得到hostent結構體信息的首地址(其定義如下)
頭文件: #include<netdb.h>
用 法: struct hostent * gethostbyaddr(const void * addr,int len,0);
返回值: 若成功則返回得到的hostent結構的首地址,出錯則返回NULL指針,同時(shí)置h_errno

struct hostent
{
char *h_name;    /* Official name of host. */
char **h_aliases;   /* Alias list. */
int h_addrtype;   /* Host address type. */
int h_length;    /* Length of address. */
char **h_addr_list;   /* List of addresses from name server. */
};


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
linux I/O函數集 - 水無(wú)恨 - 博客園
linux文件操作
64位(
偉大的C語(yǔ)言
vfs 3
字符設備驅動(dòng)程序及數據結構簡(jiǎn)介
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久