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

暴力破解wordpress网站密码软件唐山百度seo公司

暴力破解wordpress网站密码软件,唐山百度seo公司,做教育app的网站,深圳自适应网站开发公司Windows和Linux内存共享机制 引言1.Windows写操作读操作 2.Linux写操作读操作 3.Shell使用 tmux 运行 write 和 read说明 引言 在嵌入式开发领域,内存共享机制作为不同操作系统间实现高效数据交换的重要手段,尤其在对实时性和可靠性要求极高的环境中更为…

Windows和Linux内存共享机制

  • 引言
  • 1.Windows
    • 写操作
    • 读操作
  • 2.Linux
    • 写操作
    • 读操作
  • 3.Shell
      • 使用 tmux 运行 write 和 read
      • 说明


引言

在嵌入式开发领域,内存共享机制作为不同操作系统间实现高效数据交换的重要手段,尤其在对实时性和可靠性要求极高的环境中更为关键。近年来,随着ARINC 653标准的广泛应用,通过VxWorks仿真模拟器在Windows和Linux操作系统间建立内存共享机制已成为确保任务间稳定、同步运行的重要实现手段。本篇博客将深入探讨Windows和Linux各自的内存共享机制,结合ARINC 653标准在VxWorks中的实际应用,剖析其实现原理和实际使用中的关键技术,帮助读者更好地理解内存共享在跨平台环境中的应用场景与优势。

1.Windows

写操作


#include <windows.h>
#include <stdio.h>
#include <string.h>  // 用于字符串操作int main() {// 创建文件映射对象,大小为32字节HANDLE hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE,    // 使用系统分页文件NULL,                    // 默认安全性PAGE_READWRITE,          // 读写权限0,                       // 最大对象大小(高位)1024,                      // 最大对象大小(低位),32字节"Local\\MySharedMemory"   // 映射对象名称);if (hMapFile == NULL) {printf("Could not create file mapping object (%d).\n", GetLastError());return 1;}// 将文件映射到进程的地址空间LPVOID pBuf = MapViewOfFile(hMapFile,              // 文件映射对象句柄FILE_MAP_ALL_ACCESS,   // 读写权限0,                     // 偏移高位0,                     // 偏移低位32                     // 映射的字节数);if (pBuf == NULL) {printf("Could not map view of file (%d).\n", GetLastError());CloseHandle(hMapFile);return 1;}// 无限循环让用户输入数据并写入共享内存char input[32];while (1) {printf("Enter message to write to shared memory (up to 31 characters): ");fgets(input, sizeof(input), stdin);  // 从用户处读取输入input[strcspn(input, "\n")] = '\0';  // 移除换行符// 将用户输入的数据写入共享内存memcpy(pBuf, input, strlen(input) + 1);  // +1 是为了复制结束符printf("Data written to shared memory: %s\n", (char*)pBuf);}// 解除内存映射UnmapViewOfFile(pBuf);// 关闭文件映射对象句柄CloseHandle(hMapFile);return 0;
}

读操作


#include <windows.h>
#include <stdio.h>int main() {// 打开现有的文件映射对象HANDLE hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS,   // 访问权限FALSE,                 // 不继承句柄"Local\\MySharedMemory" // 映射对象名称);if (hMapFile == NULL) {printf("Could not open file mapping object (%d).\n", GetLastError());return 1;}// 映射文件视图到进程的地址空间LPVOID pBuf = MapViewOfFile(hMapFile,              // 文件映射对象句柄FILE_MAP_ALL_ACCESS,   // 读写权限0,                     // 偏移高位0,                     // 偏移低位32                     // 映射的字节数);if (pBuf == NULL) {printf("Could not map view of file (%d).\n", GetLastError());CloseHandle(hMapFile);return 1;}// 无限循环读取共享内存的数据while (1) {printf("Data read from shared memory: %s\n", (char*)pBuf);Sleep(1000);  // 每秒读取一次}// 解除内存映射UnmapViewOfFile(pBuf);// 关闭文件映射对象句柄CloseHandle(hMapFile);return 0;
}

2.Linux

写操作


#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>int main() {// 打开或创建共享内存对象int shm_fd = shm_open("/my_shared_memory", O_CREAT | O_RDWR, 0666);if (shm_fd == -1) {perror("shm_open");return 1;}// 配置共享内存大小ftruncate(shm_fd, 1024);  // 设置大小为1024字节// 映射共享内存到进程地址空间void* ptr = mmap(0, 1024, PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);if (ptr == MAP_FAILED) {perror("mmap");return 1;}// 无限循环让用户输入数据并写入共享内存char input[1024];while (1) {printf("Enter message to write to shared memory: ");fgets(input, sizeof(input), stdin);  // 从用户处读取输入input[strcspn(input, "\n")] = '\0';  // 移除换行符// 将用户输入的数据写入共享内存memcpy(ptr, input, strlen(input) + 1);  // +1 是为了复制结束符printf("Data written to shared memory: %s\n", (char*)ptr);}// 解除内存映射munmap(ptr, 1024);// 关闭共享内存对象close(shm_fd);shm_unlink("/my_shared_memory");return 0;
}

读操作


#include <fcntl.h>
#include <sys/mman.h>
#include <unistd.h>
#include <stdio.h>int main() {// 打开现有的共享内存对象int shm_fd = shm_open("/my_shared_memory", O_RDONLY, 0666);if (shm_fd == -1) {perror("shm_open");return 1;}// 映射共享内存到进程地址空间void* ptr = mmap(0, 1024, PROT_READ, MAP_SHARED, shm_fd, 0);if (ptr == MAP_FAILED) {perror("mmap");return 1;}// 无限循环读取共享内存的数据while (1) {printf("Data read from shared memory: %s\n", (char*)ptr);// sleep(1);  // 每秒读取一次}// 解除内存映射munmap(ptr, 1024);// 关闭共享内存对象close(shm_fd);return 0;
}

3.Shell

这里的shell由于要开两个终端所以不能使用SSH会话或者处于不能使用图形化界面的终端

#!/bin/bash# 编译 read.c 和 write.c
gcc - o write write.c - lrt   #  - lrt 是在一些系统上链接实时库所需的
gcc - o read read.c - lrt# 检查编译是否成功
if [[ !- f "write" || !- f "read" ]]; then
echo "Compilation failed!"
exit 1
fi# 在新终端中运行 write 程序
gnome - terminal -- bash - c "./write; exec bash" &# 在新终端中运行 read 程序
gnome - terminal -- bash - c "./read; exec bash" &# 等待所有后台进程结束
wait

如果只是在命令行界面下运行程序,可以使用 screentmux 工具来在多个会话中运行 writeread 程序。这里是如何做到这一点的。

使用 tmux 运行 write 和 read

  1. 安装 tmux(如果尚未安装):

    sudo apt install tmux  # Debian/Ubuntu 系统
    sudo yum install tmux  # CentOS/RHEL 系统
    
  2. 创建新的 Memory_Sharing.sh 脚本
    修改 Memory_Sharing.sh 脚本以使用 tmux

    #!/bin/bash# 编译 read.c 和 write.c
    gcc -o write write.c -lrt   # -lrt 是在一些系统上链接实时库所需的
    gcc -o read read.c -lrt# 检查编译是否成功
    if [[ ! -f "write" || ! -f "read" ]]; thenecho "Compilation failed!"exit 1
    fi# 创建一个新的 tmux 会话,命名为 "memory_sharing"
    tmux new-session -d -s memory_sharing# 在第一个窗格中运行 write 程序
    tmux send-keys -t memory_sharing './write' C-m# 在新窗格中运行 read 程序
    tmux split-window -h
    tmux send-keys -t memory_sharing './read' C-m# 附加到 tmux 会话
    tmux attach-session -t memory_sharing
    

说明

  1. 创建 tmux 会话

    • tmux new-session -d -s memory_sharing 创建一个新的后台会话。
  2. 在窗格中运行程序

    • tmux send-keys -t memory_sharing './write' C-m 在第一个窗格中运行 write 程序。
    • tmux split-window -h 创建一个新的窗格,并在其中运行 read 程序。
  3. 附加到会话

    • tmux attach-session -t memory_sharing 附加到创建的 tmux 会话,可以看到两个程序的输出。

运行该脚本后,将在 tmux 中看到 writeread 程序的输出。按 Ctrl + b 然后按 c 可以创建新的窗格,按 Ctrl + b 然后按 o 切换窗格,按 Ctrl + b 然后按 d 可以分离会话。

http://www.yidumall.com/news/11702.html

相关文章:

  • wordpress栏目模板seo网站培训班
  • 网站代码图片怎么拿到百度推广的代理
  • 用vs2010做免费网站模板下载地址中国优化网
  • 昆明做网站ynlongtou网站空间费用一年多少
  • 有哪些网站是可以做免费推广的品牌推广平台
  • 深圳做网站设计今日头条荆州新闻
  • 用fw做明星的网站网站百度不收录
  • 建筑施工单位网站搜索引擎google
  • wordpress管理插件windows系统优化软件排行榜
  • 武汉企业网站推广报价seo推广怎么收费
  • 网站网页设计基本理论百度网址大全 简单版
  • 英文购物网站模板谷歌推广效果好吗
  • 网站建设任务seo推广薪资
  • 珠海购物网站制作百度竞价客服
  • 网站做信用认证有必要吗广告软文是什么意思
  • 怎样做网站首页图片变换seo引擎优化
  • 网站开发系统百度产品推广
  • 工商局网站如何做网登网络推广文案有哪些
  • 北京免费网站建站模板做一个推广网站大概多少钱
  • 东莞做营销型网站的深圳做推广哪家比较好
  • 如何做自己网站云播项目营销推广策划
  • Dreamweaver 做H5网站seo蜘蛛池
  • 服务器网站怎么做seo培训师
  • 广西免费网站制作seo搜索引擎优化工资薪酬
  • 自己做的网站怎么查百度云资源共享
  • WordPress建站 网盘视频360收录批量查询
  • 美国专门做特卖的网站有哪些杭州网站seo公司
  • 手机网站 域名关键词排名优化易下拉霸屏
  • 国外化工产品b2b网站软文100字左右案例
  • 域名注册网站建设网络实名网站建设规划书