122 Linux C++ 系统编程1 终端,shell ,bash,目录和文件,切换root用户,linux常用命令, 文件信息详情,find ,grep,xargs ,显示后台程序 ps

1.终端 , shell , bash 的关系

在linux 上的黑窗口就是终端

终端里面 内嵌了一个shell,这个shell 我们将其称之为 命令解释器。

当我们在终端 输入一些字符串的时候,shell就会解析这些字符串,然后给我们反馈结果。

shell 是有很多种的,bash就是其中的一个

查看当前linux系统支持哪些shell

        cat /etc/shells

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

查看当前linux系统用的那个shell

echo $SHELL

/bin/bash

echo 是回显的意思,是将后面的那个显示在命名 提示

2.目录和文件

linux 下所见皆文件

~ 代表的是当前用户的home  ,例如 :  cd ~ 

/home/hunandede

3.切换到 root 用户   :  su root

注意的是。第一次ubuntu 安装后,root用户默认被锁定,不允许登录,也不允许“su”到 root。

~$ sudo passwd root

Password: <--- 输入安装时那个用户的密码

Enter new UNIX password: <--- 新的Root用户密码

Retype new UNIX password: <--- 重复新的Root用户密码

passwd:已成功更新密码

切换到其他普通用户

su hunandede

4.linux常用命令

ls -lah     -l 是list ,-a 是 隐藏文件, -h 是human 表示以人类正常的理解方式显示

ls -Rla  R 是递归

touch a.c  创建文件

makedir abc 创建abc文件夹

which ls 查看ls 命令真正放在哪里

pwd 查看当前路径

rmdir abc 删除abc这个空目录,如果abc不是空目录则不能删除

rm -r abc 删除abc目录下的所有文件。。。rm是删除的意思,-r是递归删除

rm -rf abc 删除abc目录下的所有文件。。。rm是删除的意思,-r是递归删除 -f是强制删除,不提示,之前的linux版本是有提示的,在现在的版本加不加这个f是一样的。

cp source.txt desfile.asd       拷贝source.txt文件到desfile.asd,实际是会创建一个desfile.asd文件,并将source.txt的内容copy 到 desfile.asd

cp -a abcmulu ..    拷贝 abcmulu 到上一级目录,-a 表示 递归拷贝 也可以是 -r 

        -a 是all 的意思,和 -r的不同是会将文件的所有信息都拷贝过去

cat a.txt  查看a.txt  

tac a.txt 倒着查看 a.txt

more a.txt      用于显示大文件,分屏显示 a.txt  知道就可以

less   a.txt     用户显示大文件  知道就可以看

whoami   查看当前登陆用户

chmod 改变文件的属性

chmod u|g|o|a   +|=|-  r|w|x  filename

u :代表user,g :group , o:other , a :all

chmod a=rwx b.txt  给b.txt 的所有用户 设定 rwx 的权限

chmod 471 b.txt 给b.txt 的user用户r权限,同组用户给rwx权限,其他用户给x权限

添加新用户

sudo adduser zhangsan 添加新用户 zhangsan

添加完成后 去查看是否有zhangsan  在这里查看 : vim /etc/passwd

删除用户 

sudo deluser zhangsan 删除zhangsan用户

删除完成后 去查看是zhangsan是否被删除了 在这里查看 : vim /etc/passwd

修改文件所属用户

sudo chown 新用户名 待修改文件

sudo chown zhangsan a.txt

添加用户组

sudo addgroup 新组名

sudo addgroup tengxun

删除用户组

sudo delgroup tengxun

修改用户组

sudo chgrp 新用户组名 待修改文件

sudo chgrp tengxun a.txt

一次性修改用户组和用户 

将a.txt 换成nobody用户,并且换成nogroup组

sudo chown nobody:nogroup a.txt

5.软硬链接

软链接

相当于 windows 上的快捷方式

ln -s  abc.txt aa.s   给源文件 abc.txt创建一个软链接 aa.s

ln -s b.txt bb.s
ln -s b.txt aaaaaaaa.s
 

lrwxrwxrwx 1 hunandede hunandede   5 2月  20 11:30 aaaaaaaa.s -> b.txt
lrwxrwxrwx 1 hunandede hunandede   5 2月  20 11:28 bb.s -> b.txt
-rw-rw-r-- 1 hunandede hunandede 447 2月  20 11:29 b.txt
我们看到这个文件的大小 是 5, 5  , 447 

如上有两个问题:

1.)bb.s 和 aaaaaaaa.s 都是使用的 相对路径创建出来的软链接。

这个软连接文件如果我们剪切到其他地方就不能使用了,这是因为其他地方没有这个相对路径。

那么创建软链接的方法最好对源文件使用 绝对路径 

类似这样:

ln -s /home/hunandede/aaa/b.txt bbb.s

bbb.s这个软链接就是 这个绝对路径 /home/hunandede/aaa/b.txt 文件的软链接,因此不管将这个bbb.s放在哪里都可以访问。

2.)我们看到这两个软链接文件的大小 是 5, 5

这个5是啥呢?

硬链接

ln  /home/hunandede/aaa/b.txt aaa

aaa 就变成了b.txt的 硬链接

改动aaa 后 b.txt也会跟着改动。

硬链接的设计原理是 所有 硬链接 都有相同的 Inode。类似于指针。

因此改动一个,其他的会跟着改动。

但是有不同于指针,还有一个  硬链接基数 存在,当删除一个硬链接的时候,硬链接基数会-1

stat file.h  查看文件详细信息。

hunandede@hunandede-virtual-machine:~/aaa$ stat a
  文件:'a'
  大小:447       	块:8          IO 块:4096   普通文件
设备:801h/2049d	Inode:664954      硬链接:2
权限:(0664/-rw-rw-r--)  Uid:( 1000/hunandede)   Gid:( 1000/hunandede)
最近访问:2024-02-20 11:29:10.337143198 +0800
最近更改:2024-02-20 11:29:10.337143198 +0800
最近改动:2024-02-20 11:52:11.290629957 +0800
创建时间:-

  

6.文件信息详情

drwxrwxr-x  3 hunandede hunandede    4096 2月  19 14:05 .
drwxr-xr-x 21 hunandede hunandede    4096 2月  20 09:49 ..
drwxr-xr-x  9 hunandede hunandede    4096 2月  19 15:37 nginx-1.14.2
-rw-rw-r--  1 hunandede hunandede 1015384 2月  19 14:04 nginx-1.14.2.tar.gz
-rw-rw-r--  1 hunandede hunandede 1112471 2月  19 14:04 nginx-1.24.0.tar.gz
文件权限, 硬链接计数,所有者, 所有者组, 文件大小, 时间,  文件名

drwxrwxr-x

d 表示文件类型

rwx 当前user 对于 该文件的或者该文件夹的权限

rwx 当前user 同组 对于 该文件的或者该文件夹的权限

r-x 其他user  对于 该文件的或者该文件夹的权限

文件类型对应表

l 符号链接 也就是软链接

stat file.h  查看文件详细信息。

hunandede@hunandede-virtual-machine:~/aaa$ stat a
  文件:'a'
  大小:447       	块:8          IO 块:4096   普通文件
设备:801h/2049d	Inode:664954      硬链接:2
权限:(0664/-rw-rw-r--)  Uid:( 1000/hunandede)   Gid:( 1000/hunandede)
最近访问:2024-02-20 11:29:10.337143198 +0800
最近更改:2024-02-20 11:29:10.337143198 +0800
最近改动:2024-02-20 11:52:11.290629957 +0800
创建时间:-

7.使用命令查找

find  按照指定的要求查找文件

find ./ -type 'l' 查找当前所有文件下 文件类型为 软链接的文件,会遍历当前目录下的所有目录。注意的是 一般文件类型是用的-,在这里要替换成f

find  ./ -name  '*.mp4'   查找当前所有文件下 后缀名为 .mp4的文件,会遍历当前目录下的所有目录

注意的是 会遍历所有的子文件

但是常常我们不想这么干,只想找当前目录下的,不想找子目录下的。

find ./ -maxdepth 1 -name '*.txt'

注意的是 -maxdepth 是要放在 -name之前

find 后面要紧跟 文件目录,然后才是各种参数

find ./ -size +20M -size -50M  查找大于20m 小于 50m的文件

find ./ -size +1c -size -50c   

注意的是,从这个文档 copy 到 linux 命令行的时候 总是出现各种各样的问题,因此建议手敲

-b 是block 的意思,块的意思,最小空间就是512byte

       -size n[cwbkMG]
              File uses n units of space, rounding up.  The  following  suffixes
              can be used:

              `b'    for  512-byte  blocks  (this is the default if no suffix is
                     used)

              `c'    for bytes

              `w'    for two-byte words

              `k'    for Kilobytes (units of 1024 bytes)

              `M'    for Megabytes (units of 1048576 bytes)

              `G'    for Gigabytes (units of 1073741824 bytes)

-atime,  a 代表access代表访问时间

-mtime, m代表modify,指的是属性变化,访问权限变化等,并不是内容变化

-ctime  c代表changed,代表的文件内容变化

time 后面的时间代表天数

find /usr/ -name '*tem*' -exec ls -l { } \;

查找 /usr 目录下 含有 tem字符的文件名,找到后 执行 ls -l

{} \; 是 语法,意思是将 找到的文件名 放在{}里面,对{}里面的内容 执行 ls -l

find ./ -maxdepth 1 -name '*.txt' -exec ls -lah {} \;
-rw-rw-r-- 1 hunandede hunandede 0 2月  20 13:16 ./c.txt
-rw-rw-r-- 1 hunandede hunandede 33 2月  20 13:52 ./a.txt

find ./ -maxdepth 1 -name '*.txt' -ok ls -lah {} \;
 

如果换成 ok ,则表示要询问user ,是否真的执行

一般会用到rm 的时候

find ./ -maxdepth 1 -name '*.txt' -ok rm -r {} \;

hunandede@hunandede-virtual-machine:~/aaa$ find ./ -maxdepth 1 -name '*.txt' -ok rm -r {} \;
< rm ... ./c.txt > ? y
< rm ... ./a.txt > ? y
hunandede@hunandede-virtual-machine:~/aaa$ ls
b.c

 xargs 对于find 的二次 过滤

find ./ -type f | xargs ls -la

hunandede@hunandede-virtual-machine:~/aaa$ find ./ -type f | xargs ls -la
-rw-rw-r-- 1 hunandede hunandede  0 2月  20 14:52 ./a.txt
-rw-rw-r-- 1 hunandede hunandede 21 2月  20 14:52 ./b.c
hunandede@hunandede-virtual-machine:~/aaa$ 

man find 查看文档 

grep  按照内容查找

grep -r  'cpy' ./   查找当前文件内容中 cpy字符串的文件

grep -r  'cpy' ./ -n   查找当前文件内容中 cpy字符串的文件,-n表示显示行数

注意这里使用 grep -r  '*cpy*' ./ 反而查不到

 常用方式:查看所有后台指令,并将有bash关键字的弄出来

 ps aux | grep bash

hunandede@hunandede-virtual-machine:~/aaa$ ps aux | grep bash
hunande+   3046  0.0  0.1  24176  5296 pts/20   Ss+  09:49   0:00 bash
hunande+   3852  0.0  0.1  24184  5452 pts/21   Ss+  12:48   0:00 -bash
hunande+   3999  0.0  0.1  24176  5504 pts/22   Ss   13:06   0:00 -bash
hunande+   4480  0.0  0.0  15972  1084 pts/22   S+   14:58   0:00 grep --color=auto bash

注意,最后一条是 自己当前查找命令的,并不是真正的和bash

通过前面的学习,我们应该这这里有一个领悟,就是如果 有两条命令,中间是可以通过 |关联起来的

类似这样  ps aux | grep bash ,将前面的内容 通过 | 再次分隔

但是这样的方式对于 前面是find 不好用

本身 aaa 文件夹下就有 两个文件,一个文件夹,我们通过find ./ -type f找到的应该就只有两个文件,然后 ls -la 就只能两个,但是实际上文件夹也显示出来了

find ./ -type f | ls -la

hunandede@hunandede-virtual-machine:~/aaa$ ls
a.txt  b.c  ccc
hunandede@hunandede-virtual-machine:~/aaa$ find ./ -type f | ls -la
total 16
drwxrwxr-x  3 hunandede hunandede 4096 2月  20 15:06 .
drwxr-xr-x 22 hunandede hunandede 4096 2月  20 14:57 ..
-rw-rw-r--  1 hunandede hunandede    0 2月  20 14:52 a.txt
-rw-rw-r--  1 hunandede hunandede   21 2月  20 14:52 b.c
drwxrwxr-x  2 hunandede hunandede 4096 2月  20 15:06 ccc
hunandede@hunandede-virtual-machine:~/aaa$ 

8.显示后台程序,相当于 windows的任务管理器

ps 命令

ps -aux

ps -ef

ps 命令用于监控后台进程的工作情况,

选项有 -e 显示所有进程

-f全格式

-h 不显示标题

-l 长格式

-w 宽输出

-r 只显示正在运行的进程

-a 查看当前系统所有用户的所有进程

-u 

-x

ps -aux 是常用组合

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux网络编程(总共41集) 讲解Linux网络编程知识,分以下四个篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧格式 ICMP ARP RARP 03TCPIP基础(三) IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06socket编程(一) 什么是socket IPv4套接口地址结构 网络字节序 字节序转换函数 地址转换函数 套接字类型 07socket编程(二) TCP客户/服务器模型 回射客户 /服务器 socket、bind、listen、accept、connect 08socket编程(三) SO_REUSEADDR 处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、gethostbyaddr 11socket编程(六) TCP回射客户/服务器 TCP是个流协议 僵进程与SIGCHLD信号 12socket编程(七) TCP 11种状态 连接建立三次握手、连接终止四次握手 TIME_WAIT与SO_REUSEADDR SIGPIPE 13socket编程(八) 五种I/O模型 select 用select改进回射客户端程序 14socket编程(九) select 读、写、异常事件发生条件 用select改进回射服务器程序。 15socket编程(十) 用select改进第八章点对点聊天程序 16socket编程(十一) 套接字I/O超时设置方法 用select实现超时 read_timeout函数封装 write_timeout函数封装 accept_timeout函数封装 connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) udp聊天室实现 21socket编程(十六) UNIX域协议特点 UNIX域地址结构 UNIX域字节流回射客户/服务 UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对象的持续性 24进程间通信介绍(二) 死锁 信号量 PV原语 用PV原语解决司机与售票员问题 用PV原语解决民航售票问题 用PV原语解决汽车租赁问题 25System V消息队列(一) 消息队列 IPC对象数据结构 消息队列结构 消息队列在内核中的表示 消息队列函数 26System V消息队列(二) msgsnd函数 msgrcv函数 27System V消息队列(三) 消息队列实现回射客户/服务器 28共享内存介绍 共享内存 共享内存示意图 管道、消息队列与共享内存传递数据对比 mmap函数 munmap函数 msync函数 29System V共享内存 共享内存数据结构 共享内存函数 共享内存示例 30System V信号量(一) 信
教程非常不错,价值280元,绝对是干货 Linux网络编程(总共41集) 讲解Linux网络编程知识,分以下四个篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧格式 ICMP ARP RARP 03TCPIP基础(三) IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06socket编程(一) 什么是socket IPv4套接口地址结构 网络字节序 字节序转换函数 地址转换函数 套接字类型 07socket编程(二) TCP客户/服务器模型 回射客户/服务器 socket、bind、listen、accept、connect 08socket编程(三) SO_REUSEADDR 处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、gethostbyaddr 11socket编程(六) TCP回射客户/服务器 TCP是个流协议 僵进程与SIGCHLD信号 12socket编程(七) TCP 11种状态 连接建立三次握手、连接终止四次握手 TIME_WAIT与SO_REUSEADDR SIGPIPE 13socket编程(八) 五种I/O模型 select 用select改进回射客户端程序 14socket编程(九) select 读、写、异常事件发生条件 用select改进回射服务器程序。 15socket编程(十) 用select改进第八章点对点聊天程序 16socket编程(十一) 套接字I/O超时设置方法 用select实现超时 read_timeout函数封装 write_timeout函数封装 accept_timeout函数封装 connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) udp聊天室实现 21socket编程(十六) UNIX域协议特点 UNIX域地址结构 UNIX域字节流回射客户/服务 UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对象的持续性 24进程间通信介绍(二) 死锁 信号量 PV原语 用PV原语解决司机与售票员问题 用PV原语解决民航售票问题 用PV原语解决汽车租赁问题 25System V消息队列(一) 消息队列 IPC对象数据结构 消息队列结构 消息队列在内核中的表示 消息队列函数 26System V消息队列(二) msgsnd函数 msgrcv函数 27System V消息队列(三) 消息队列实现回射客户/服务器 28共享内存介绍 共享内存 共享内存示意图 管道、消息队列与共享内存传递数据对比 mmap函数 munmap函数 msync函数 29System V共享内存 共享内存数据结构 共享内存函数 共享内存示例 30System V信号量(一) 信号量 信号量集结构 信号量集函数 信号量示例 31System V信号量(二) 用信号量实现进程互斥示例 32System V信号量(三) 用信号集解决哲学家就餐问题 33System V共享内存与信号量综合 用信号量解决生产者消费者问题 实现shmfifo 34POSIX消息队列 POSIX消息队列相关函数 POSIX消息队列示例 35POSIX共享内存 POSIX共享内存相关函数 POSIX共享内存示例 Linux网络编程之线程篇 36线程介绍 什么是线程 进程与线程 线程优缺点 线程模型 N:1用户线程模型 1:1核心线程模型 N:M混合线程模型 37POSIX线程(一) POSIX线程库相关函数 用线程实现回射客户/服务器 38POSIX线程(二) 线程属性 线程特定数据 39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁介绍 40POSIX条件变量 条件变量 条件变量函数 条件变量使用规范 使用条件变量解决生产者消费者问题 41一个简单的线程池实现 线程池性能分析 线程池实现 网络编程, Linux, 密码
教程非常不错,价值280元,绝对是干货 Linux网络编程(总共41集) 讲解Linux网络编程知识,分以下四个篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧格式 IC MP ARP RARP 03TCPIP基础(三) IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程之socket编程篇 06socket编程(一) 什么是socket IPv4套接口地址结构 网络字节序 字节序转换函数 地址转换函数 套接字类型 07socket编程(二) TCP客户/服务器模型 回射客户/服务器 socket、bind、listen、accept、connect 08socket编程(三) SO_REUSEADDR 处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、gethostbyaddr 11socket编程(六) TCP回射客户/服务器 TCP是个流协议 僵进程与SIGCHLD信号 12socket编程(七) TCP 11种状态 连接建立三次握手、连接终止四次握手 TIME_WAIT与SO_REUSEADDR SIGPIPE 13socket编程(八) 五种I/O模型 select 用select改进回射客户端程序 14socket编程(九) select 读、写、异常事件发生条件 用select改进回射服务器程序。 15socket编程(十) 用select改进第八章点对点聊天程序 16socket编程(十一) 套接字I/O超时设置方法 用select实现超时 read_timeout函数封装 write_timeout函数封装 accept_timeout函数封装 connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) udp聊天室实现 21socket编程(十六) UNIX域协议特点 UNIX域地址结构 UNIX域字节流回射客户/服务 UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对象的持续性 24进程间通信介绍(二) 死锁 信号量 PV原语 用PV原语解决司机与售票员问题 用PV原语解决民航售票问题 用PV原语解决汽车租赁问题 25System V消息队列(一) 消息队列 IPC对象数据结构 消息队列结构 消息队列在内核中的表示 消息队列函数 26System V消息队列(二) msgsnd函数 msgrcv函数 27System V消息队列(三) 消息队列实现回射客户/服务器 28共享内存介绍 共享内存 共享内存示意图 管道、消息队列与共享内存传递数据对比 mmap函数 munmap函数 msync函数 29System V共享内存 共享内存数据结构 共享内存函数 共享内存示例 30System V信号量(一) 信号量 信号量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值