当前位置: 首页 > news >正文

linuxbash原理

3417    1647  0 04:17 ?        00:00:21 /usr/libexec/gnome-terminal-server

yangang     3425    3417  0 04:17 pts/0    00:00:00 bash

yangang     4524    3417  0 04:26 pts/1    00:00:00 bash

控制台创建是通过/usr/libexec/gnome-terminal-server 进行创建

read :

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/stat.h>#define SHM_NAME "/my_shared_memory"
#define SHM_SIZE 4096int main() {int shm_fd;//char *ptr;#if 0 // 打开共享内存对象shm_fd = shm_open(SHM_NAME, O_RDONLY, 0666);if (shm_fd == -1) {perror("shm_open");exit(EXIT_FAILURE);}// 映射共享内存ptr = mmap(0, SHM_SIZE, PROT_READ, MAP_SHARED, shm_fd, 0);if (ptr == MAP_FAILED) {perror("mmap");exit(EXIT_FAILURE);}// 从共享内存读取数据printf("Reading from shared memory:\n");printf("%s\n", ptr);// 清理if (munmap(ptr, SHM_SIZE) == -1) {perror("munmap");}close(shm_fd);
#endif char *p = NULL;shm_fd = shm_open (SHM_NAME, O_RDONLY, 0666);if (shm_fd == -1) {printf("error, shm_fd:%d\r\n", shm_fd);} else {printf("shm_fd:%d\r\n", shm_fd);}p = mmap (0, SHM_SIZE,PROT_READ,MAP_SHARED, shm_fd, 0);             if (p == NULL){printf("error, p = %d\r\n", p);} else {     printf("p:%d\r\n", p);}   printf("read value:%s", p);if ( munmap(p, SHM_SIZE) < 0){perror("munmap failed\r\n");} else {printf("munmap ok\r\n");}close (shm_fd);return EXIT_SUCCESS;
}

write

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/stat.h>#define SHM_NAME "/my_shared_memory"
#define SHM_SIZE 4096int main() {int shm_fd;char *ptr;
#if 0 // 创建共享内存对象shm_fd = shm_open(SHM_NAME, O_CREAT | O_RDWR, 0666);if (shm_fd == -1) {perror("shm_open");exit(EXIT_FAILURE);}// 设置共享内存大小if (ftruncate(shm_fd, SHM_SIZE) == -1) {perror("ftruncate");exit(EXIT_FAILURE);}// 映射共享内存ptr = mmap(0, SHM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);if (ptr == MAP_FAILED) {perror("mmap");exit(EXIT_FAILURE);}// 写入数据到共享内存printf("Writing to shared memory...\n");sprintf(ptr, "Hello from the writer process! PID: %d", getpid());// 等待用户输入,保持共享内存映射printf("Press Enter to unlink and exit...\n");getchar();// 清理if (munmap(ptr, SHM_SIZE) == -1) {perror("munmap");}if (shm_unlink(SHM_NAME) == -1) {perror("shm_unlink");}
#endif char *p = NULL;shm_fd = shm_open (SHM_NAME, O_RDWR, 0666);if (shm_fd < 0 ) {printf("error, shm_fd:%d\r\n", shm_fd);} else {printf("shm_fd:%d\r\n", shm_fd);}if (ftruncate(shm_fd, 4096) < 0 ){printf("ftruncate error\r\n");} else {printf("ftruncate ok \r\n", shm_fd);}p = mmap (0, SHM_SIZE,PROT_WRITE,MAP_SHARED, shm_fd, 0);             if (p == NULL){printf("error, p = %d\r\n", p);} else {     printf("p:%d\r\n", p);}   sprintf(p, "this is mmap test \r\n");getchar();if ( munmap(p, SHM_SIZE) < 0){perror("munmap failed\r\n");} else {printf("munmap ok\r\n");}close (shm_fd);return EXIT_SUCCESS;
}

相关文章:

  • docker 多主机容器组网
  • x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!
  • 自然语言交互:NAS进化的下一站革命
  • 智能云图库-1-项目初始化
  • 医学成像中的对比语言-图像预训练模型(CLIP):一项综述|文献速递-深度学习医疗AI最新文献
  • Multisim使用教程详尽版--(2025最新版)
  • 数据库索引深度解析:原理、类型与高效使用实践
  • 图像处理有哪些核心技术?技术发展现状如何?
  • 【信息安全】黑芝麻A1000芯片安全启动方案
  • Android Studio 日志系统详解
  • [OS] vDSO + vvar(频繁调用的处理) | 存储:寄存器(高效)和栈(空间大)| ELF标准包装规范(加速程序加载)
  • springboot调用python文件,在ubuntu上部署,踩坑之旅(已部署成功)
  • Redis的Key的过期策略
  • 【笔试强训day19】
  • Spring 事件机制与观察者模式的深度解析
  • 《 C++ 点滴漫谈: 三十三 》当函数成为参数:解密 C++ 回调函数的全部姿势
  • vue2实现在屏幕中有一个小机器人可以随意移动
  • 数字化引擎再升级:小匠物联十周年庆典与全链路创新实践
  • Ubuntu 22.04安装MySQL : Qwen2.5 模型对话数据收集与微调教程
  • 探索Linux/Unix 系统中进程与文件的深层关系
  • 美众议院通过法案将“墨西哥湾”更名为“美国湾”
  • A股低开高走全线上涨:军工股再度领涨,两市成交12934亿元
  • 巴基斯坦信德省卡拉奇发生爆炸
  • 上交现场配乐4K修复版《神女》:默片巅峰有了新的打开方式
  • 新华时评:任凭风云变幻,中俄关系从容前行
  • 这个五月,有三部纪录电影值得一看