- 博客(25)
- 收藏
- 关注
原创 linux网络编程
/IP地址(将字符串类型转换为二进制地址类型)子网掩码展开成二进制,1对应的部分就是IP地址的网络位,0对应的部分就是IP地址的主机位。//端口号(将本地字节序转换为网络字节序)子网掩码:每个IP地址都会搭配一个子网掩码,用来区分IP地址的网络位及主机位。私有地址:192.168.0.0 ~ 192.168.255.255。私有地址:10.0.0.0 ~ 10.255.255.255。
2024-08-16 08:39:27
643
原创 linux 消息队列和信号灯
/SEM_UNDO 操作结束后,信号量的值会恢复到原来的值。//对信号量的操作 +1(释放信号量) -1(申请信号量)read.c 创建共享内存 -> 映射 -> 从共享内存中读取数据 -> 显示到终端。write.c 创建共享内存 -> 映射 -> 从终端接收数据写入共享内存中。recv.c 创建消息队列 -> 接收消息 -> 销毁消息队列。ipcrm -q/m/s 消息队列ID/共享内存ID/信号灯ID。IPC_CREAT:创建一个信号量数组。IPC_CREAT:创建一个消息队列。
2024-08-15 08:14:35
582
原创 linux信号
自定义的函数的函数名(指向函数的指针)9号SIGKILL和19号信号SIGSTOP不能被忽略和捕捉。SIG_IGN 忽略信号。handler:信号对应的处理方式。成功返回之前注册的信号的处理方式。printf("SIGQUIT信号处理方式切换为:捕捉\n");printf("SIGINT信号处理方式切换为:捕捉\n");signum:信号的编号。成功返回上次定时剩余的秒数。printf("时间到了, 界面该刷新!按照默认的方式处理信号。按照指定的方式处理信号。printf("电话来了,休息一下!
2024-08-12 03:54:06
469
原创 嵌入式管道
无名管道创建后,进程会获得操作管道的两个文件描述符,创建子进程时,子进程会拷贝得到父进程的操作无名管道的两个文件描述符,4.编写两个进程任务clienta.c和clientb.c, clienta.c从终端接收一行字符串,通过管道发送给clientb.c。通过管道在文件系统中的路径找到管道名,两个进程以读写的方式打开同一管道完成通信。如果管道中写满(64k),则阻塞等待,等有数据读出才能继续写入。如果管道中没有数据,会阻塞等待直到有数据写入后读出。向管道中写入数据会产生管道破裂信号。
2024-08-10 08:15:29
392
原创 linux锁和信号量
printf("线程(TID:%#lx TID:%#lx TID:%#lx)创建成功\n", (unsigned long)tid[0], (unsigned long)tid[1], (unsigned long)tid[2]);printf("线程(TID:%#lx TID:%#lx TID:%#lx)创建成功\n", (unsigned long)tid1, (unsigned long)tid2, (unsigned long)tid3);3.请求和保持条件:如果没有拿到锁资源一直申请获得锁资源。
2024-08-09 01:38:08
1662
原创 linux线程
printf("子进程正常结束,值为:%d\n", WEXITSTATUS(status));printf("子进程被 %d 号信号杀死\n", WTERMSIG(status));printf("子进程1(PID:%d)开始执行\n", getpid());printf("子进程2(PID:%d)开始执行\n", getpid());printf("回收到子进程(PID:%d)的空间了\n", ret);先干点别的事吧\n");
2024-08-08 08:25:08
1401
原创 linux进程
printf("父进程 PID:%d 子进程1PID:%d 子进程2PID:%d\n", getpid(), pid1, pid2);父进程先结束,子进程成为孤儿进程,被init进程(1号)进程收养,子进程结束,init系统进程自动回收进程空间。printf("子进程1 PID:%d 父进程 PPID:%d\n", getpid(), getppid());printf("子进程2 PID:%d 父进程 PPID:%d\n", getpid(), getppid());
2024-08-07 08:50:34
368
原创 嵌入式day19
删除链接文件名,并让硬链接个数-1 ,如果一个磁盘空间硬链接个数为0,需要回收磁盘空间。软连接文件名 -> inode -> 数据块 -> 链接向的文件名 -> inode -> 数据块。ln -s 要链接向的文件名 软链接文件名。创建一个newpath的硬链接文件。ln 要链接的文件名 硬链接文件名。oldpath:要链接的文件名。buf:存放软链接文件内容的缓冲区。newpath:硬链接文件名。pathname:链接文件名。文件名 -> inode -> 数据块。target:链接向的文件名。
2024-08-03 08:48:20
1532
原创 嵌入式day17
向流中写入nmemb个对象,每个对象size个字节,在ptr指向的空间中存放。从流中读取nmemb个对象,每个对象size个字节,在ptr指向的空间中存放。s:用于存放读取到的字符串。fgets不会去掉用户输入的\n字符。ptr:写入数据空间的首地址。ptr:存放数据空间的首地址。size:字符串的长度。nmemb:写入对象的个数。成功返回实际写入对象的个数。nmemb:写入对象的个数。成功返回实际读取对象的个数。size:每个对象的大小。stream:文件流指针。size:每个对象的大小。
2024-08-01 08:54:02
635
原创 嵌入式day16
w 只写 如果文件存在则清0,只写打开。w+ 写读 如果文件存在则清0,读写打开。如果文件不存在则创建。如果文件不存在则创建。a 追加只写 如果文件存在则追加只写打开。如果文件不存在则创建。a+ 追加读写 如果文件存在则追加读写打开。如果文件不存在则创建。r 只读 如果文件存在则只读打开。r+ 读写 如果文件存在则读写打开。
2024-07-31 06:32:39
514
原创 嵌入式day15
1.函数体内部的局部变量会随函数结束被回收,可以考虑存放到堆区空间中避免随函数结束回收。当使用strcat、strcpy、strcmp函数时可能会产生内存越界。应该用strncat、strncpy、strncmp函数替代。注意:操作指针时,注意指针指向的空间是否存在?4.单向链表、双向链表、内核链表、循环链表。如果成功,返回指向申请空间的指针。申请size个字节的堆区空间。size:申请空间的大小。1.数组是有限个元素的集合。3.数组的插入和删除效率低。2.数组的空间必须连续。1.链表空间不需要连续。
2024-07-29 07:36:28
272
原创 嵌入式day14
1.存放结构体成员变量,必须保证前面的长度为成员变量所占空间大小的整数倍。1.枚举常量第一个值默认为0,后面的枚举常量为前一个枚举常量的值+1。^ 按位异或 相同为0 相异为1。括号 > 单目 > 双目 > 三目 > 赋值 > 逗号。2.结构体整体的大小必须为最大类型长度的整数倍。2.枚举类型对应的变量的值应该为枚举常量中的值之一。1.小端:内存低地址存放低数据位称为内存小端。不改变其余位的前提下,让第n位置1。不改变其余位的前提下,让第n位置0。& 按位与。
2024-07-27 08:19:40
321
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人