- 博客(10)
- 收藏
- 关注
原创 信号灯/量
释放资源,如果没有线程阻塞在该sem上,表示没有线程等待该资源,这时该函数就对信号量的值进行增1操作,表示同类资源多增加了一个。如果至少有一个线程阻塞在该sem上,表示有线程等待资源,信号量为0,这时该函数保持信号量为0不变,并使某个阻塞在该sem上的线程从sem_wait函数中返回。获取资源,如果信号量为0,表示这时没有相应资源空闲,那么调用线程就将挂起,直到有空闲资源可以获取。//对某一个信号灯的操作,如果同时对多个操作,则需要定义这种结构体数组。//要操作的信号灯的编号。
2024-01-31 14:58:12
707
原创 进程间通信(消息队列)
IPC_NOWAIT:如果没有返回条件的消息调用立即返回,此时错误ENOMSG。IPC_NOWAIT:当消息队列已满的时候,msgsnd函数不等待立即返回。1消息结构必须有long类型的msg_type字段,表示消息的类型。cmd要执行的操作IPC_STAT / IPC_SET / IPC_RMID(删除)0:当消息队列满时,msgsnd将会阻塞,直到消息能写进消息队列。例子:如果msgtype=-4,只接受类型是1、2、3、4的消息。msgtype>0:收到的第一条msg_type类型的消息。
2024-01-30 14:50:50
808
1
原创 进程通信(信号下)
返回值:若成功则返回0,若出错则返回-1首先,若oset是非空指针,那么进程的当前信号屏蔽字通过oset返回。有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数。信号的阻塞概念:信号的”阻塞“是一个开关动作,指的是阻止信号被处理,但不是阻止信号产生。SIG_UNBLOCK:从信号屏蔽字中删除参数set中的信号。SIG_SETMASK:把信号屏蔽字设置为参数set中的信号。SIG_BLOCK:把参数set中的信号添加到信号屏蔽字中。
2024-01-27 20:26:32
428
原创 进程间通信(信号上)
SA_NODEFER:使对信号的屏蔽无效,即在信号处理函数执行期间仍能发出这个信号。act,oldact:处理信号的新行为和旧的行为,是一个sigaction结构体。SA_SIGINFO:使用sa_sigaction成员而不是sa_handler作为信号处理函数。sa_sigaction:另一个信号处理函数,它有三个参数,可以获得关于信号的更详细的信息。2.使用signal/sigaction函数,把自定义的handle和指定的信号相关联。linux内核通过信号通知用户进程,不同的信号类型代表不同的事件;
2024-01-26 20:25:09
1211
1
原创 进程间通信(共享内存)
功能:创建共享内存映射函数返回值:成功返回创建的映射区首地址,失败返回MAP_FAILED(((void *) -1)),设置errno值。
2024-01-25 19:31:12
363
原创 进程间通信(无名管道,有名管道)
(2)管道未满,write将数据写入,并返回实际写入的字节数。(2)写端没有全部被关闭,read阻塞等待(不久的将来可能有数据递达,此时会让出cpu)1.管道读端全部被关闭,进程异常终止(也可使用捕捉SIGPIPE信号,使进程不终止)2.管道中无数据:(1)管道写端被全部关闭,read返回0 (好像读到文件结尾)2.管道读端没有全部关闭:(1)管道已满,write阻塞。3)无名管道创建时会返回两个文件描述符,分别用于读写管道;2)单工的通信模式,具有固定的读端和写端;mode 管道文件的权限,(八进制);
2024-01-24 20:19:29
561
1
原创 Makefile用法及变量
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。makefile文件一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。再次编译,只编译修改的文件。提升了编译效率。会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。
2023-12-21 20:50:19
432
原创 Linux TFTP服务器
TFTP(Trivial File Transfer Protocol)即简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
2023-12-20 15:26:06
1324
原创 Shell脚本(语句详解)
算术运算命令expr主要用于进行简单的整数运算,包括加(+)、减(-)、乘(\*)、整除(/)和求模(%)等操作。结构性语句主要根据程序的运行状态、输入数据、变量的取值、控制信号以及运行时间等因素来控制程序的运行流程。-s name测试name文件是否存在且其长度不为0f1。-n s1 测试s1字符串的长度是否不为0。-z s1 测试s1字符串的长度是否为0。-x name测试name文件是否存在且为可执行。-r name测试name文件是否存在且为可读。
2023-12-19 18:47:59
351
原创 Shell脚本(变量详解)
双引号:允许通过$符号引用其他变量值弱引用,其中的变量引用会被替换为变量值单引号:禁止引用其他变量值,$视为普通字符强引用,其中的变量引用不会被替换为变量值,而保持源字符串反撇号:命令替换,提取命令执行后的输出结果,``和$(…)作用相同$0与键入的命令行一样,包含脚本文件名$1,$2,……$9 ${10} 分别包含第一个到第十个命令行参数$#包含命令行参数的个数$@包含所有命令行参数:“$1,$2,……$9”$*包含所有命令行参数,是一个整体:“$1,$2,……$9”
2023-12-18 22:01:11
372
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人