- 博客(22)
- 资源 (1)
- 收藏
- 关注

原创 UNIX环境高级编程笔记(1)- 错误处理函数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录前言一、函数可变参数的介绍二、出错处理函数0.unix编程中实现简单的ls命令中使用err_sys出错处理函数的使用1.void err_ret(const char *fmt,...)2.void err_sys(const char *fmt,...)3.void err_cont(int error,const char *fmt,...)4.void err_exit(int error,cons
2021-03-19 16:10:12
1182
12
原创 UNIX环境高级编程笔记(21)- I/O多路转接-select
前言本章主要介绍I/O多路转接-select。一、I/O多路转接解决:I/O多路转接目的是解决同时阻塞多个文件描述的问题。原理:构造一张我们感兴趣的描述符(通常都不止一个)的列表,然后调用一个函数,直到这些描述符中的一个已经准备好进行I/O时,改函数才返回。poll、pselect、select这三个函数使我们能够执行I/O多路转接。从这些函数返回时,进程会被告知哪些描述符已经准备好可以进行I/O。二、select#include <sys/seclect.h>...
2021-03-26 19:50:02
182
3
原创 UNIX环境高级编程笔记(20)- 记录锁
前言本章主要介绍记录锁。一、记录锁功能:当第一个进程正在读或者修改文件的某个部分时,使用记录锁可以阻止其他进程修改同一文件区。#include <fcntl.h>int fcntl(int fd, int cmd, .../* struct flock *flockptr*/);参数fd,文件描述符;参数cmd,是获取锁F_GETLK、设置锁F_SETLK、设置阻塞锁F_SETLKW;参数flockptr,是一个指向struct flock结构的指针;...
2021-03-26 18:16:44
299
3
原创 UNIX环境高级编程笔记(19)- 守护进程
一、守护进程介绍守护进程(Deamon process),是linux的后台服务进程。它是一个生存周期较长并且独立于控制终端的进程,通常周期性地执行某种任务或者执行某些发生的事件。守护进程是个特殊的孤儿进程,这种进程脱离终端,之所以脱离于终端是为了避免进程被任何终端所产生的信息所打断,其在执行过程中的信息也不在任何终端上显示。由于在 Linux 中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进...
2021-03-26 14:50:01
1198
7
原创 UNIX环境高级编程笔记(18)- 线程信号
前言本章主要介绍线程中的信号。一、pthread_sigmask#include <signal.h>int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict oset);pthread_sigmask函数与sigprocmask函数基本相同,不过pthread_sigmask工作在线程中。set 参数包含线程用于修改信号屏蔽字的信号集。how参数可以取下列3...
2021-03-26 10:19:28
413
1
原创 UNIX环境高级编程笔记(17)- 线程同步-读写锁、条件变量、自旋锁、屏障
前言本章主要介绍线程同步中的读写锁、条件变量、自旋锁、屏障。一、读写锁介绍读写锁与互斥量类似,不过读写锁允许更高的并行性。互斥量要么是锁住状态,要么是不加锁状态,而且一次只有一个线程对其加锁。读写锁可以有3中状态,读模式的加锁状态,写模式的加锁状态,不加锁状态。一次只有一个线程可以占用写模式的读写锁,但是多个线程可以同时占有读模式写的读写锁。当读写锁是在写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞。当读写锁在读加锁状态时,所有试图以读模式对它进行加锁的线...
2021-03-25 19:59:26
204
1
原创 UNIX环境高级编程笔记(16)- 线程同步-互斥量
前言本文章主要介绍线程同步中的互斥量。一、互斥量互斥量本质上是一把锁,在访问共享资源前对互斥量进行加锁,在访问完后释放互斥量。#include <pthread.h>#include <time.h>int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);int pthread_mutex_destory(...
2021-03-25 15:49:19
1126
8
原创 UNIX环境高级编程笔记(15)- 线程pthread
前言本章主要介绍线程的使用。一、pthread#include <pthread.h>pthread_t pthread_self(void);//获取自身的线程IDint pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(start_rtn)(void *), void *restrict arg);//创建线程void pthread_e...
2021-03-25 14:37:24
1113
3
原创 UNIX环境高级编程笔记(14)- 函数sigsuspend 实现父进程子进程同步
前言本章主要介绍sigsuspend函数以及实现父进程子进程通过信号的同步。一、函数sigsuspend#include<signal.h>int sigsuspend(const sigset_t *sigmask);二、sigsuspend介绍1.将进程的信号屏蔽字设置为由sigmask指向的值。在捕捉到一个信号或发生了一个会终止该进程的信号之前,该进程被挂起。如果捕捉到一个信号而且从该信号处理程序返回,则sigsuspend返回,并且将该进程的信号屏蔽字...
2021-03-25 12:20:30
336
1
原创 UNIX环境高级编程笔记(13)- 函数sigaction
前言本文章主要介绍函数sigaction及其参数。一、struct sigaction结构体struct sigaction{void (*sa_handler)(int); /*addr of signal handler or SIG_IGN or SIG_DFL*/sigset_t sa_mask; /*addition signals to block*/int sa_flags; /*signal options*/void (*sa_sigaction...
2021-03-24 19:49:56
390
1
原创 UNIX环境高级编程笔记(12)- 函数sigprocmask
前言本章主要介绍函数sigprocmask、给出了打印进程中的信号屏蔽字例程。一、函数sigprocmask#include <signal.h>。int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset);功能:给一个进程添加或者去掉信号屏蔽子。参数:若oset为为空指针,那么进程的当前信号屏蔽字通过oset返回。参数:其次,若set是一个非空指针,则参数...
2021-03-24 17:42:58
1243
2
原创 UNIX环境高级编程笔记(11)- 信号集
前言本文章主要介绍了处理信号集的5个函数。一、信号集处理函数#include <signal.h>int sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);int sigaddset(sigset_t *set, int signo);int sigdelset(sigset_t *set, int signo);int sigismember(const sigset_t *set, i...
2021-03-24 17:06:25
123
1
原创 UNIX环境高级编程笔记(10)- 函数signal
目录文章目录前言一、函数signal二、函数signal使用1.signal总结前言本章主要介绍signal及命令行发送SIGUSR1和SIGUSR2信号的处理。一、函数signal#include<signal.h>void (*signal(int signo,void (*func)(int)))(int);其中,参数1 signo为信号名,通常可以取值为SIGABRT SIGABRT SIGCHLD SIGGEM...
2021-03-24 14:39:13
217
1
原创 UNIX环境高级编程笔记(9)- 进程时间times
目录文章目录前言一、times函数二、struct tms结构体二、例程1.times()函数总结前言本章主要介绍进程时间times的使用,struct tms结构体,以及times使用实例。一、times函数#include<sys/times.h>clock_t times(struct tms *buf);二、struct tms结构体struct tms{clock_t tms_utime;// 用户CPU时间...
2021-03-23 19:58:15
802
1
原创 UNIX环境高级编程笔记(8)- 进程控制system
目录文章目录前言一、system二、代码1.system函数的实现2.system函数使用3.代码运行结果总结前言本章类容主要介绍system的实现和使用。一、system#include<stdlib.h>int system(const char *cmdstring);二、代码1.system函数的实现代码如下(示例):int my_system(const char *cmdstring){ ...
2021-03-23 18:22:57
256
4
原创 UNIX环境高级编程笔记(7)- 进程控制exec函数的区别和联系
目录前言一、exec函数及其区别二、7个exec函数之间的联系三、函数例程1.实现echoall.c函数2.execle和execlp函数的使用总结前言本文章主要介绍进程控制中的exec函数,7中exec函数的使用区别以及execle和execlp调用新程序的代码实战。一、exec函数及其区别exec函数创建新的子进程后,子进程往往要调用一种exec函数以执行另一个程序,当进程调用一种exec函数时,改进程执行的程序完全被替换为新的程序,而新程序...
2021-03-23 16:56:15
440
1
原创 UNIX环境高级编程笔记(6)- 进程控制fork、vfork、wait、waitpid
目录文章目录前言一、函数fork二、函数vfork三、函数wait四、函数waitpid五、函数实例1.fork()2.vfork()3.wait()4.waitpid()5.main函数总结前言本文章简单介绍了fork()、vfork()、wait()、waitpid()函数,以及相应实例。一、函数fork现有进程可以调用fork函数创建一个新进程,父进程和子进程的执行顺序不定,由内核调度决定。#include...
2021-03-23 15:20:23
390
1
原创 UNIX环境高级编程笔记(5)- stat文件类型
文章目目录文章目录前言一、stat函数二、stat结构体三、文件类型四、代码1.对每个命令行参数打印文件类型前言本章主要介绍文件类型和struct stat结构体提示:以下是本篇文章正文内容,下面案例可供参考一、stat函数#include <sys/stat.h>int stat(const char *restrict pathname,struct stat *restrict buf);int fstat(int fd...
2021-03-22 17:28:00
1420
6
原创 UNIX环境高级编程笔记(4)- I/O数据结构和文件共享
目录前言一、内核I/O数据结构二、一个进程打开两个文件三、两个独立进程打开同一文件四、函数dup和dup2五、实例总结前言本章主要介绍内核用于所有I/O的数据结构,以及两个进程各自打开统一文件的数据结构和dup、dup2用来复制一个文件描述符的实例。提示:以下是本篇文章正文内容,下面案例可供参考一、内核I/O数据结构内核使用3中数据结构表示打开文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。(1)每个进程在...
2021-03-22 15:35:03
245
5
原创 UNIX环境高级编程笔记(3)- 从标准输入读命令并执行
目录文章目录前言一、fork()函数二、waitpid函数三、exec函数四、代码例程1.获取进程ID2.从标准输入读命令并执行五、代码说明总结前言本文章主要介绍一种从标准输入读命令并执行的代码,以及对需要用到的函数fork、exec、waitpid等函数接口的介绍。一、fork()函数一个进程可以调用fork函数创建一个新进程。函数接口为:#include<unistd.h>pid_t fork(void)...
2021-03-19 21:00:42
375
2
原创 UNIX环境高级编程笔记(2)- STDIN_FILENO、STDOUT_FILENO和stdin、stdout的区别
目录前言一、STDIN_FILENO、STDOUT_FILENO介绍二、stdin、stdout介绍三、代码例程1.文件描述符的使用2.流的使用3.代码标记总结前言本章主要通过UNIX高级编程中的两个例子来说明STDIN_FILENO、STDOUT_FILENO和stdin、stdout的区别,以及简要说明不带缓冲的I/O和标准I/O。一、STDIN_FILENO、STDOUT_FILENO介绍两个常量STDIN_FILENO、STDOU...
2021-03-19 18:57:29
1962
4
unix环境高级编程各个章节代码.rar
2021-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人