zoukankan      html  css  js  c++  java
  • [国嵌攻略][070-095][Linux编程函数手册]

    第1类 时间编程类

    1.1 获取日历时间

    1.1.1 函数名

    time

    1.1.2 函数原形

    time_t time(time_t *t)

    1.1.3 函数功能

    返回日历时间

    1.1.4 所属头文件

    <time.h>

    1.1.5 返回值

    成功:日历时间失败:-1

    1.1.6 参数说明

    t:不为空的情况下保存返回值

     

    1.2 获取格林威治时间

    1.2.1 函数名

    gmtime

    1.2.2 函数原形

    struct tm *gmtime(const time_t *timep)

    1.2.3 函数功能

    将参数timep所指定的日历时间转化为世界标志时间

    1.2.4 所属头文件

    <time.h>

    1.2.5 返回值

    成功:返回世界标准时间,以struct tm形式存储

    struct tm {

                   int tm_sec;         /* seconds */

                   int tm_min;         /* minutes */

                   int tm_hour;        /* hours */

                   int tm_mday;        /* day of the month */

                   int tm_mon;         /* month */

                   int tm_year;        /* year */

                   int tm_wday;        /* day of the week */

                   int tm_yday;        /* day in the year */

                   int tm_isdst;       /* daylight saving time */

               };

    1.2.6 参数说明

    timep:待转换的时间

     

    1.3 获取本地时间

    1.3.1 函数名

    localtime

    1.3.2 函数原形

    struct tm *localtime(const time_t *timep)

    1.3.3 函数功能

    将参数timep所指向的日历时间转化为本地时间

    1.3.4 所属头文件

    <time.h>

    1.3.5 返回值

    成功:返回以struct tm格式存储的本地时间失败:NULL

    1.3.6 参数说明

    timep:指向待转化的日历时间

    1.4 以字符串方式显示时间

    1.4.1 函数名

    asctime

    1.4.2 函数原形

    char *asctime(const struct tm *tm)

    1.4.3 函数功能

    struct tm格式的时间转化为字符串

    1.4.4 所属头文件

    <time.h>

    1.4.5 返回值

    字符串方式显示的时间

    1.4.6 参数说明

    tm:待转化的tm格式时间

     

    1.5 获取高精度时间

    1.5.1 函数名

    gettimeofday

    1.5.2 函数原形

    int gettimeofday(struct timeval *tv, struct timezone *tz)

    1.5.3 函数功能

    获取高精度的时间

    1.5.4 所属头文件

    <sys/time.h>

    1.5.5 返回值

    成功:0 失败:-1

    1.5.6 参数说明

    tv:保存从1970.1.1.0:0:0到现在经历的秒数和微妙数

    struct timeval {

    time_t      tv_sec;     /* seconds */

    suseconds_t tv_usec;    /* microseconds */

    };

    tzone:通常为空

    struct timezone {

    int tz_minuteswest;   /* minutes west of Greenwich */

    int tz_dsttime;       /* type of DST correction */

    };

     

     

     

     

     

     

     

     

     

     

     

    第2类 系统调用文件编程类

    2.1 打开文件

    2.1.1 函数名

    open

    2.1.2 函数原形

    int open(const char *pathname, int flags)

    int open(const char *pathname, int flags, mode_t mode)

    2.1.3 函数功能

    打开或者创建一个文件

    2.1.4 所属头文件

    <sys/types.h> <sys/stat.h> <fcntl.h>

    2.1.5 返回值

    成功:文件描述符失败:-1

    2.1.6 参数说明

    pathname:要打开的文件名(含路径)

    flags:文件打开的标志

    -O_RDONLY:以只读方式打开文件

    -O_WRONLY:以只写方式打开文件

    -O_RDWR:以可读可写方式打开文件

    -O_APPEND:以追加方式打开文件

    -O_CREAT:当打开的文件不存在的时候,创建该文件

    mode:一定是在flags中使用了-O_CREAT标志,mode记录待创建的访问权限访问

     

    2.2 创建文件

    2.1.1 函数名

    creat

    2.1.2 函数原形

    int creat(const char *pathname, mode_t mode)

    2.1.3 函数功能

    创建一个文件,并以只写的方式打开该文件

    2.1.4 所属头文件

    <sys/types.h> <sys/stat.h> <fcntl.h>

    2.1.5 返回值

    成功:文件描述符失败:-1

    2.1.6 参数说明

    pathname:创建的文件名(含路径)

    mode:创建文件的读写权限

     

    2.3 关闭文件

    2.3.1 函数名

    close

    2.3.2 函数原形

    int close(int fd)

    2.3.3 函数功能

    关闭一个打开的文件

    2.3.4 所属头文件

    <unistd.h>

    2.3.5 返回值

    成功:0 失败:-1

    2.3.6 参数说明

    fd:待关闭的文件描述符

     

    2.4 读文件

    2.4.1 函数名

    read

    2.4.2 函数原形

    ssize_t read(int fd, void *buf, size_t count);

    2.4.3 函数功能

    从一个打开的文件中读取数据

    2.4.4 所属头文件

    <unistd.h>

    2.4.5 返回值

    成功:返回读取的字节数失败:-1

    2.4.6 参数说明

    fd:要读取数据的文件的描述符

    count:希望读取的字节数

    buf:读取来的数据存到buf指向的空间

     

    2.5 写文件

    2.5.1 函数名

    write

    2.5.2 函数原形

    ssize_t write(int fd, void *buf, size_t count)

    2.5.3 函数功能

    向一个打开文件写入数据

    2.5.4 所属头文件

    <unistd.h>

    2.5.5 返回值

    成功:写入到文件里的字节数失败:-1

    2.5.6 参数说明

    fd:要写入数据的文件的描述符

    buf:要写入数据的存放位置

    count:写入数据的字节数

     

    2.6 定位文件

    2.6.1 函数名

    lseek

    2.6.2 函数原形

    off_t lseek(int fd, off_t offset, int whence)

    2.6.3 函数功能

    重新定位文件的读写位置

    2.6.4 所属头文件

    <sys/types.h> <unistd.h>

    2.6.5 返回值

    成功:返回移动后的文件指针距离文件头的位置失败:-1

    2.6.6 参数说明

    fd:指定要操作的文件的描述符

    offset:相对偏移,正数为向后移动,负数为向前移动

    whence:SEEK_SET,相对于文件头偏移offsetSEEK_CUR,相对于当前位置偏于offsetSEEK_END,相对于文件尾偏移offset

     

    2.7 复制文件描述符

    2.7.1 函数名

    dup

    2.7.2 函数原形

    int dup(int oldfd)

    2.7.3 函数功能

    复制一个文件描述符

    2.7.4 所属头文件

    <unistd.h>

    2.7.5 返回值

    成功:返回新的文件描述符失败:-1

    2.7.6 参数说明

    oldfd:待复制的老的文件描述符

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    第3类 库函数文件编程类

    3.1 打开文件

    3.1.1函数名

    fopen

    3.1.2 函数原形

    FILE *fopen(const char *path, const char *mode)

    3.1.3 函数功能

    打开文件

    3.1.4 所属头文件

    <stdio.h>

    3.1.5 返回值

    成功:返回文件指针失败:NULL

    3.1.6 参数说明

    path:指定的打开的文件的名字(含路径)

    mode:文件打开模式。”r”以只读方式打开;”r+”以可读可写方式打开;”w”以可写方式打开;”w+”以可读可写方式打开,如果文件不存在则创建文件,否则清空文件;”a”以追加写的方式打开文件;”a+”以追加写并且可读的方式打开文件,如果文件不存在则创建文件

    3.2 关闭文件

    3.2.1 函数名

    fclose

    3.2.2 函数原形

    int fclose(FILE *fp)

    3.2.3 函数功能

    关闭文件

    3.2.4 所属头文件

    <stdio.h>

    3.2.5 返回值

    成功:0 失败:EOF

    3.2.6 参数说明

    fp:待关闭的文件指针

     

    3.3 读文件

    3.3.1 函数名

    fread

    3.3.2 函数原形

    size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

    3.3.3 函数功能

    从文件中读取数据

    3.3.4 所属头文件

    <stdio.h>

    3.3.5 返回值

    成功:返回成功读取到的数据量失败:0

    3.3.6 参数说明

    ptr:指向读取出来后的数据保存的位置

    size:每块数据的大小

    nmemb:读取的数据块数

    stream:指向要读取的文件

     

    3.4 写文件

    3.4.1 函数名

    fwrite

    3.4.2 函数原形

    size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

    3.4.3 函数功能

    向文件中写入数据

    3.4.4 所属头文件

    <stdio.h>

    3.4.5 返回值

    成功:返回成功写入的数据量失败:0

    3.4.6 参数说明

    ptr:存放要写入文件的数据

    size:每块数据的大小

    nmemb:写入的数据块数

    stream:要写入数据的文件指针

     

    3.5 定位文件

    3.5.1 函数名

    fseek

    3.5.2 函数原形

    int fseek(FILE *stream, long offset, int whence)

    3.5.3 函数功能

    设置文件的位置指针

    3.5.4 所属头文件

    <stdio.h>

    3.5.5 返回值

    成功:0 失败:-1

    3.5.6 参数说明

    stream:指定要操作的文件的描述符

    offset:相对偏移,正数为向后移动,负数为向前移动

    whence:SEEK_SET,相对于文件头偏移offsetSEEK_CUR,相对于当前位置偏于offsetSEEK_END,相对于文件尾偏移offset

     

     

     

     

     

     

    第4类 多进程编程类

    4.1 获取进程号

    4.1.1 函数名

    getpid

    4.1.2 函数原形

    Pid_t getpid()

    4.1.3 函数功能

    返回调用该函数的进程的id

    4.1.4 所属头文件

    <sys/types.h> <unistd.h>

    4.1.5 返回值

    调用该函数的id

    4.1.6 参数说明

     

    4.2 创建进程

    4.2.1 函数名

    fork

    4.2.2 函数原形

    pid_t fork(void)

    4.2.3 函数功能

    创建一个子进程

    4.2.4 所属头文件

    <unistd.h>

    4.2.5 返回值

    成功:在父进程中返回子进程的pid,在子进程中返回0

    失败:-1

    4.2.6 参数说明

    无参数

     

    4.2 创建进程

    4.2.1 函数名

    vfork

    4.2.2 函数原形

    pid_t vfork(void)

    4.2.3 函数功能

    创建一个子进程,并且阻塞父进程。与父进程共享数据

    4.2.4 所属头文件

    <sys/types.h>

    <unistd.h>

    4.2.5 返回值

    成功:在父进程中返回子进程的pid,在子进程中返回0

    失败:-1

    4.2.6 参数说明

    无参数

     

    4.2 结束进程

    4.2.1 函数名

    exit

    4.2.2 函数原形

    void exit(int status)

    4.2.3 函数功能

    结束进程,子进程只能用exit()结束,父进程可以用exit()return结束

    4.2.4 所属头文件

    <stdlib.h>

    4.2.5 返回值

    4.2.6 参数说明

    status0表示正常结束 1表示异常结束

     

    4.3 进程等待

    4.3.1 函数名

    wait

    4.3.2 函数原形

    pid_t wait(int *status)

    4.3.3 函数功能

    挂起调用它的进程,直到其子进程结束

    4.3.4 所属头文件

    <sys/types.h> <sys/wait.h>

    4.3.5 返回值

    成功:返回终止的那个子进程的id 失败:-1

    4.3.6 参数说明

    status:记录子进程的退出状态

     

    4.4 执行程序

    4.4.1 函数名

    execl

    4.4.2 函数原形

    int execl(const char *path, const char *arg, ...)

    4.4.3 函数功能

    运行可执行文件

    4.4.4 所属头文件

    <unistd.h>

    4.4.5 返回值

    成功:不返回失败:返回

    4.4.6 参数说明

    path:要运行的可执行文件路径

    arg:可执行文件运行需要的参数,以NULL来结束

     

    第5类 管道通讯编程类

    5.1 创建无名管道

    5.1.1 函数名

    pipe

    5.1.2 函数原形

    int pipe(int pipefd[2])

    5.1.3 函数功能

    创建无名管道

    5.1.4 所属头文件

    <unistd.h>

    5.1.5 返回值

    成功:0 失败:-1

    5.1.6 参数说明

    pipefd[0]:读端fd

    pipefd[1]:写端fd

     

    5.2 创建有名管道

    5.2.1 函数名

    mkfifo

    5.2.2 函数原形

    int mkfifo(const char*pathname, mode_t mode)

    5.2.3 函数功能

    创建fifo文件(有名管道)

    5.2.4 所属头文件

    <sys/types.h> <sys/stat.h>

    5.2.5 返回值

    成功:0 失败:-1

    5.2.6 参数说明

    pathname:要创建的fifo文件的名字(带路径)

    mode:创建的fifo文件的访问权限

     

    5.3 删除有名管道

    5.3.1 函数名

    unlink

    5.3.2 函数原形

    int unlink(const char* pathname)

    5.3.3 函数功能

    删除文件

    5.3.4 所属头文件

    <unistd.h>

    5.3.5 返回值

    成功:0 失败:-1

    5.3.6 参数说明

    pathname:用来指明要删除的文件名字(含路径)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    第6类 信号通讯编程类

    6.1 发送信号

    6.1.1 函数名

    kill

    6.1.2 函数原形

    int kill(pid_t pid, int sig)

    6.1.3 函数功能

    向进程发送信号

    6.1.4 所属头文件

    <sys/types.h> <signal.h>

    6.1.5 返回值

    成功:0 失败:-1

    6.1.6 参数说明

    pid:pid>0,pid参数指向接受信号的进程

    sig:指明要发送的信号

    6.2 处理信号

    6.2.1 函数名

    signal

    6.2.2 函数原形

    typedef void(*sighandler_t)(int)

    sighandler_t signal(int signum, sighandler_t handler)

    6.2.3 函数功能

    设置信号的处理方式

    6.2.4 所属头文件

    <signal.h>

    6.2.5 返回值

    成功:返回处理函数的指针失败:SIG_ERR

    6.2.6 参数说明

    signum:要处理的信号

    handler:对应信号的处理方式,可以取值,SIG_IGN,忽视这个信号(不处理);SIG_DFL,交给内核来处理;用户自定义的函数,交给用户自定义的函数

    第8类 信号量编程类

    8.1 创建/打开信号量集合

    8.1.1 函数名

    semget

    8.1.2 函数原形

    int segmet(key_t key, int nsems, int semflg)

    8.1.3 函数功能

    获取信号量集合的标示符

    key所指定的信号量不存在的时候,并且semflg包含了IPC_CREAT,这时会创建一个信号量集合

    8.1.4 所属头文件

    <sys/types.h> <sys/ipc.h> <sys/sem.h>

    8.1.5 返回值

    成功:返回信号量集合的标示符失败:-1

    8.1.6 参数说明

    key:键值

    nsems:创建的信号量集合里面包含的信号量数目

    semflg:标志,可以取IPC_CREAT

     

    8.2 操作信号量

    8.2.1 函数名

    semop

    8.2.2 函数原形

    int semop(int semid, struct sembuf *sops, unsigned nsops)

    8.2.3 函数功能

    操作信号量

    8.2.4 所属头文件

    <sys/types.h> <sys/ipc.h> <sys/sem.h>

    8.2.5 返回值

    成功:0 失败:-1

    8.2.6 参数说明

    semid:要操作的信号量集合的标示符

    sops:对哪个信号量执行什么样的操作,为要操作信号量数组

    struct sembuf{

    unsigned short sem_num;  /* semaphore number */

    short          sem_op;   /* semaphore operation */

    short          sem_flg;  /* operation flags */

    }

    sem_op如果是正数表示释放信号量,如果是负数表示获取信号量;sem_flg一般设置为SEM_UNDO,当程序发生错误时,系统帮助释放信号量

    nsops:要操作多少个信号量

     

    8.3 操作信号量

    8.3.1 函数名

    semctl

    8.3.2 函数原形

    int semclt(int semid, int semnum, int cmd, ...)

    8.3.3 函数功能

    操作信号量

    8.3.4 所属头文件

    <sys/types.h> <sys/ipc.h> <sys/sem.h>

    8.3.5 返回值

    成功:所请求的相应的值失败:-1

    8.3.6 参数说明

    semid:要操作的信号量集合的标示符

    semnum:要操作多少个信号量

    cmd:对信号量执行什么样的操作

    GETVALthe value of semval.

    SETVALSet  the  value  of  semval  to  arg.val

     

     

     

     

     

     

    第9类 共享内存编程类

    9.1创建/获取共享内存

    9.1.1 函数名

    shmget

    9.1.2 函数原形

    int shmget(key_t key, size_t size, int shmflg)

    9.1.3 函数功能

    创建或者获取共享内存,并返还其描述符id

    9.1.4 所属头文件

    <sys/ipc.h> <sys/shm.h>

    9.1.5 返回值

    成功:返还创建或者获取到的共享内存的描述符

    失败:-1

    9.1.6 参数说明

    key:共享内存的键值

    size:共享内存的大小

    shmflg:打开标志,如果使用了IPC_CREAT,则会新创建一个共享内存

    9.2映射共享内存

    9.2.1 函数名

    shmat

    9.2.2 函数原形

    void *shmat(int shmid, const void *shmaddr, int shmflg)

    9.2.3 函数功能

    shmid所指定的共享内存映射到进程的地址空间里

    9.2.4 所属头文件

    <sys/types.h> <sys/shm.h>

    9.2.5 返回值

    成功:返回映射到进程空间之后的内存地址

    失败:-1

    9.2.6 参数说明

    shmid:要映射的共享内存的描述符

    shmaddr:指定映射之后的地址,但是一般情况都让该参数为NULL,表明让Linux系统自动选择映射地址

    shmflg:标志

     

    9.3脱离共享内存

    9.3.1 函数名

    shmdt

    9.3.2 函数原形

    int shmdt(const void *shmaddr)

    9.3.3 函数功能

    从进程地址空间中,断掉与共享内存的联系

    9.3.4 所属头文件

    <sys/types.h> <sys/shm.h>

    9.3.5 返回值

    成功:0 失败:-1

    9.3.6 参数说明

    shmaddr:要断开的共享内存的映射地址

     

    9.4删除共享内存

    9.4.1 函数名

    shmctl

    9.4.2 函数原形

    int shmctl(int shmid, int cmd, struct shmid_ds *buf)

    9.4.3 函数功能

    控制共享内存

    9.4.4 所属头文件

    <sys/ipc.h> <sys/shm.h>

    9.4.5 返回值

    成功:根据不同操作返回不同的值

    失败:-1

    9.4.6 参数说明

    shmid:要控制的共享内存的id

    cmd:决定执行什么样的控制操作,如IPC_RMID(表示删除)

    buf:获取Linux中描述共享内存的struct shmid_ds结构,基本不使用

     

     

     

    第10类 消息队列编程类

    10.1创建/打开消息队列

    10.1.1 函数名

     msgget

    10.1.2 函数原形

    int msgget(key_t key, int msgflg)

    10.1.3 函数功能

    打开或创建消息队列

    10.1.4 所属头文件

    <sys/types.h> <sys/ipc.h> <sys/msg.h>

    10.1.5 返回值

    成功:返回消息队列的id

    失败:-1

    10.1.6 参数说明

    key:键值

    msgflg;打开标志,IPC_CREAT:表明新创建一个消息队列

     

    10.2发送数据

    10.2.1 函数名

    msgsnd

    10.2.2 函数原形

    int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg)

    10.2.3 函数功能

    发送消息到消息队列

    10.2.4 所属头文件

    <sys/types.h> <sys/ipc.h> <sys/msg.h>

    10.2.5 返回值

    失败:-1

    成功:0

    10.2.6 参数说明

    msqid:消息队列的id

    msgp:指向要发送的数据

    msgsz:消息的长度

    msgflg:标志

    消息结构:

    struct msgbuf {

    long mtype;    /* message type, must be > 0 */

    char mtext[1]; /* message data */

    };

     

    10.3接收消息

    10.3.1 函数名

    msgrcv

    10.3.2 函数原形

    ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg)

    10.3.3 函数功能

    从消息队列中接收消息

    10.3.4 所属头文件

    <sys/types.h> <sys/ipc.h> <sys/msg.h>

    10.3.5 返回值

    失败:-1

    成功:返回实际结束到的消息的数据长处

    10.3.6 参数说明

    msqid:消息队列的id

    msgp:存放取出的消息

    msgsz:希望取到消息的最大长度

    msgtyp:消息的类型。

    =0:直接忽略类型,直接取消息队列中的第一天消息;

    >0:取消息队列中类型等于msgtpy的第一条消息;

    <0:取类型比msgtpy的绝对值要小或者等于的消息,如果有多条消息满足该条件,则取类型最小的一条;

    msgflg:标志

     

    10.4删除消息队列

    10.4.1 函数名

    msgctl

    10.4.2 函数原形

    int msgctl(int msqid, int cmd, struct msqid_ds *buf)

    10.4.3 函数功能

    控制消息队列

    10.4.4 所属头文件

    <sys/types.h> <sys/ipc.h> <sys/msg.h>

    10.4.5 返回值

    失败:-1

    成功:0

    10.4.6 参数说明

    msqid:消息队列的id

    cmd:对消息队列执行的操作命令,IPC_RMID用于删除消息队列

    buf:获取内核中的struct msqid_ds,通常不用

     

     

     

    第11类 多线程编程类

    11.1创建线程

    11.1.1 函数名

    pthread_create

    11.1.2 函数原形

    int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg)

    11.1.3 函数功能

    创建新的线程

    11.1.4 所属头文件

    <pthread.h> 特别注意:编译时必须链接pthread

    11.1.5 返回值

    成功:0 失败:错误编码

    11.1.6 参数说明

    thread:新创建的线程的ID

    attr:待创建线程的属性,一般为NULL

    start_routine:线程的入口函数

    arg:线程入口函数的参数,可以为NULL

     

    11.2等待线程结束

    11.2.1 函数名

    pthread_join

    11.2.2 函数原形

    int pthread_join(pthread_t thread, void **retval)

    11.2.3 函数功能

    用于等待线程结束

    11.2.4 所属头文件

    <pthread.h> 特别注意:编译时必须链接pthread

    11.2.5 返回值

    成功:0 失败:错误编号

    11.2.6 参数说明

    thread:要等待结束的线程的ID

    retval:用于保存线程退出时的状态,一般为NULL

     

    11.3退出线程

    11.3.1 函数名

    pthread_exit

    11.3.2 函数原形

    void pthread_exit(void *retval)

    11.3.3 函数功能

    结束线程

    11.3.4 所属头文件

    <pthread.h> 特别注意:编译时必须链接pthread

    11.3.5 返回值

    void

    11.3.6 参数说明

    retval:保存返回值

     

    11.4线程互斥锁初始化

    11.4.1 函数名

    phtread_mutex_init

    11.4.2 函数原形

    int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr)

    11.4.3 函数功能

    用来初始化互斥锁

    11.4.4 所属头文件

    <pthread.h>

    11.4.5 返回值

    成功:0 失败:错误编号

    11.4.6 参数说明

    mutex:要去初始化的互斥锁的指针

    attr:初始化的属性,一般为NULL

     

    11.5获取线程互斥锁

    11.5.1 函数名

    phtread_mutex_lock

    11.5.2 函数原形

    int pthread_mutex_lock(pthread_mutex_t *mutex)

    11.5.3 函数功能

    用来锁住互斥锁

    11.5.4 所属头文件

    <pthread.h>

    11.5.5 返回值

    成功:0 失败:错误编号

    11.5.6 参数说明

    mutex:要锁住的互斥锁

     

    11.6释放线程互斥锁

    11.6.1 函数名

    phtread_mutex_unlock

    11.6.2 函数原形

    int pthread_mutex_unlock(pthread_mutex_t *mutex) 11.6.3 函数功能

    用来解开互斥锁

    11.6.4 所属头文件

    <pthread.h>

    11.6.5 返回值

    成功:0 失败:错误编号

    11.6.6 参数说明

    mutex:要解开的互斥锁

     

    11.7提交条件变量

    11.7.1 函数名

    pthread_cond_signal

    11.7.2 函数原形

    int pthread_cond_signal(pthread_cond_t *cond)

    11.7.3 函数功能

    提交条件变量

    11.7.4 所属头文件

    <pthread.h>

    11.7.5 返回值

    成功:0 失败:错误编号

    11.7.6 参数说明

    cond:要提交的条件变量

     

    11.8等待条件变量

    11.8.1 函数名

    pthread_cond_wait

    11.8.2 函数原形

    int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex)

    11.8.3 函数功能

    等待条件变量

    11.8.4 所属头文件

    <pthread.h>

    11.8.5 返回值

    成功:0 失败:错误编号

    11.8.6 参数说明

    cond:要等待的条件变量。通过pthread_cond_t cond = PTHREAD_COND_INITIALIZER初始化

    mutex:与条件变量关联的互斥锁。先unlock互斥锁,然后再lock

     

     

     

    第13类 网络编程类

    12.1TCP通信

    服务器

    socket(创建socket

    bind(绑定地址)

    listen(监听端口)

    accept(等待连接)

    send/recv(发|收数据)

    close(结束连接)

    客户机

    socket(创建socket

    connect(连接服务器)

    send/recv(发|收数据)

    close(关闭连接)

     

    UDP通信

    服务器

    socket(创建socket

    bind(绑定地址)

    sendto/recvfrom(发|收数据)

    close(结束连接)

    客户机

    socket(创建socket

    sendto/recvfrom(发|收数据)

    close(关闭连接)

     

     

    12.1创建套接字

    12.1.1 函数名

    socket

    12.1.2 函数原形

    int socket(int domain, int type, int protocol)

    12.1.3 函数功能

    创建一个套接字

    12.1.4 所属头文件

    <sys/socket.h>

    12.1.5 返回值

    成功:套接字描述符失败:-1

    12.1.6 参数说明

    domain:通信域,通常取AF_INET(表示Ipv4)

    type:类型,通常取

    SOCK_DGRAM(表示UDP)SOCK_STREAM(表示TCP)

    protocol:协议,通常取0

     

    12.2地址绑定

    12.2.1 函数名

    bind

    12.2.2 函数原形

    int bind(int sockfd, const struct sockeaddr *addr, socklen_t len)

    12.2.3 函数功能

    将地址绑定到一个套接字

    12.2.4 所属头文件

    <sys/socket.h>

    12.2.5 返回值

    12.2.6 参数说明

    sockfd:套接字标示符

    addr:绑定地址

    len:地址长度

     

    //#include <netinet/in.h>

    通用地址

    struct sockaddr {
    sa_family_t sa_family;
    char sa_data[14];
    }

    IPv4地址
    struct sockaddr_in {
    short int sin_family;
    unsigned short int sin_port;
    struct in_addr sin_addr;
    unsigned char sin_zero[8];
    }
    struct in_addr {
    unsigned long s_addr;
    }

     

    地址转换

    in_addr_t inet_addr(const char *cp)

    功能:将字符串形式的IP地址转化为整数形式的IP地址(网络字节序)

    范例:in_addr.saddr = inet_addr(“192.168.1.1”);

    int inet_aton(const char *cp, struct in_addr *inp);

    将字符串形式的IP地址转化为整数形式的IP地址(网络字节序)

    char *inet_ntoa(struct in_addr)

    功能:将整数形式的IP地址转化为字符串形式的IP地址

     

    网络字节序

    uint32_t htonl(uint32_t hostlong);

    功能:将32位的数据从主机字节序转换为网络字节序

    范例:in_addr.saddr = htonl(INADDR_ANY)INADDR_ANY表示本机的所有地址

    uint16_t htons(uint16_t hostshort);

    功能:将16位的数据从主机字节序转换为网络字节序

    uint32_t ntohl(uint32_t netlong);

    功能:将32位的数据从网络字节序转换为主机字节序

    uint16_t ntohs(uint16_t netshort);

    功能:将16位的数据从网络字节序转换为主机字节序

     

    12.3监听端口

    12.3.1 函数名

    listen

    12.3.2 函数原形

    int listen(int sockfd, int backlog)

    12.3.3 函数功能

    设置服务器监听端口

    12.3.4 所属头文件

    <sys/socket.h>

    12.3.5 返回值

    成功:0 失败:-1

    12.3.6 参数说明

    sockfd:套接字fd

    backlog:服务器可连接的客户数量

     

    12.4等待连接

    12.4.1 函数名

    accept

    12.4.2 函数原形

    int accept(int sockfd, struct sockaddr *restrict addr, socklen_t *restrict len)

    12.4.3 函数功能

    等待客户机连接,如果没有客户机连接,将阻塞服务器

    12.4.4 所属头文件

    <sys/socket.h>

    12.4.5 返回值

    成功:返回新的套件字描述符失败:-1

    12.4.6 参数说明

    sockfd:套接字fd

    addr:返回客户机的地址

    len:返回的地址长度

     

    12.5接收数据

    12.5.1 函数名

    recv

    12.5.2 函数原形

    ssize_t send(int sockfd, const void * buf, size_t nbytes, int flags)

    12.5.3 函数功能

    用于接收数据

    12.5.4 所属头文件

    <sys/socket.h>

    12.5.5 返回值

    成功:0 失败:-1

    12.5.6 参数说明

    sockfd:新的套件字fd

    buf:接收的数据

    nbytes:接收的字节数

    flags:标志

     

    12.6发送数据

    12.6.1 函数名

    send

    12.6.2 函数原形

    ssize_t send(int sockfd, const void * buf, size_t nbytes, int flags)

    12.6.3 函数功能

    用于发送数据

    12.6.4 所属头文件

    <sys/socket.h>

    12.6.5 返回值

    成功:返回发送的字节数失败:-1

    12.6.6 参数说明

    sockfd:新的套件字fd

    buf:发送的数据

    nbytes:发送的字节数

    flags:标志

     

    12.7建立连接

    12.7.1 函数名

    connect

    12.7.2 函数原形

    int connect(int sockfd, const struct sockaddr *addr, socklen_t len)

    12.7.3 函数功能

    用于客户机向服务器建立连接

    12.7.4 所属头文件

    <sys/socket.h>

    12.7.5 返回值

    成功:0 失败:-1

    12.7.6 参数说明

    sockfd:套接字fd

    addr:服务器地址

    len:地址长度

     

    12.8 udp发送数据

    12.8.1 函数名

    sendto

    12.8.2 函数原形

    ssize_t sendto(int sockfd, const void *buf, size_t nbytes, int flags, const struct sockaddr *destaddr, socklen_t deslen)

    12.8.3 函数功能

    发送数据

    12.8.4 所属头文件

    <sys/socket.h>

    12.8.5 返回值

    成功:返回发送的字节数失败:-1

    12.8.6 参数说明

    sockfd:套接字fd

    buf:要发送的数据

    nbytes:发送数据的字节数

    flags:标志

    destaddr:目的地址

    deslen:地址长度

     

    12.9 udp接收数据

    12.9.1 函数名

    recvfrom

    12.9.2 函数原形

    ssize_t recvfrom(int sockfd, void *restrict buf, size_t len, int flags, struct sockaddr *restrict addr, socklen_t *restrict addrlen)

    12.9.3 函数功能

    接收数据

    12.9.4 所属头文件

    <sys/socket.h>

    12.9.5 返回值

    成功:0 失败:-1

    12.9.6 参数说明

    sockfd:套接字fd

    buf:接收的数据

    len:期望接收数据的字节数

    flags:标志

    addr:接收的地址

    addrlen:接收地址的长度

     

  • 相关阅读:
    C语言截取从某位置开始指定长度子字符串方法
    vim:放弃hjkl
    vim资源
    PHP和.NET通用的加密解密函数类,均使用3DES加解密 .
    Java与.NET DES加密解密互转
    案例:使用正则表达式的爬虫
    爬虫的正则表达式re模块
    爬虫中Requests模块
    Oracle系列十一 数据处理
    爬虫urllib2 的异常错误处理URLError和HTTPError
  • 原文地址:https://www.cnblogs.com/d442130165/p/5236202.html
Copyright © 2011-2022 走看看