如何实现在Windows上运行Linux程序附示例代码大家好我是风清扬一个常年混迹在 Windows 和 Linux 两界的“双面间谍”。很多开发者刚入行的时候会遇到一个扎心的问题我手里只有一台 Windows 电脑但公司或者项目要求必须用 Linux 环境运行程序。怎么办难道只能装双系统、上虚拟机或者干脆买台新电脑别急今天我就手把手带你搞清楚如何在 Windows 上直接运行 Linux 程序。并且我会提供完整的示例代码保证你看完就能上手实战。—## 为什么要在 Windows 上运行 Linux 程序先说说背景。Linux 是服务器端开发的主流环境很多开源工具、脚本、甚至是深度学习框架比如 PyTorch、TensorFlow在 Linux 上都有更好的支持。而 Windows 生态更偏向桌面端和游戏开发两者各有优势。如果你需要在 Windows 上开发 Linux 应用程序或者测试 Linux 下的脚本传统的方法有- 安装虚拟机VirtualBox / VMware- 使用双系统启动- 使用 WSLWindows Subsystem for Linux—— 也就是我们今天的主角WSL 的优势是轻量、快速、无虚拟机开销而且可以直接访问 Windows 的文件系统非常方便。—## 方法一使用 WSLWindows Subsystem for Linux### 1. 安装 WSL首先确保你的 Windows 版本是 Windows 10 版本 2004 及以上或者 Windows 11。打开 PowerShell管理员模式运行以下命令powershell# 启用 WSL 功能dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart# 启用虚拟机平台WSL2 需要dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart# 重启电脑Restart-Computer重启后设置 WSL 2 为默认版本powershellwsl --set-default-version 2然后从 Microsoft Store 安装你喜欢的 Linux 发行版比如 Ubuntu。### 2. 运行你的第一个 Linux 程序安装完成后打开“开始菜单”中的 Ubuntu 应用就会进入一个真正的 Linux 终端。现在你可以直接运行 Linux 程序了。—## 示例一用 Python 写一个 Linux 下的系统信息查看器假设你想写一个 Python 脚本在 Linux 环境下查看 CPU、内存等信息。这个脚本在 WSL 中直接运行。创建文件sysinfo.pypythonimport platformimport os# 获取系统信息def get_system_info(): info { 操作系统: platform.system(), 主机名: platform.node(), 架构: platform.machine(), 处理器: platform.processor(), Python版本: platform.python_version() } return info# 获取内存使用情况读取 /proc/meminfodef get_memory_info(): mem {} with open(/proc/meminfo, r) as f: for line in f: if line.startswith(MemTotal): mem[总内存] line.strip() elif line.startswith(MemFree): mem[空闲内存] line.strip() elif line.startswith(MemAvailable): mem[可用内存] line.strip() return mem# 主函数if __name__ __main__: print( 系统信息 ) for key, value in get_system_info().items(): print(f{key}: {value}) print(\n 内存信息 ) for key, value in get_memory_info().items(): print(f{key}: {value})在 WSL 终端中运行bashpython3 sysinfo.py你会看到类似输出 系统信息 操作系统: Linux主机名: DESKTOP-ABC123架构: x86_64处理器: x86_64Python版本: 3.10.12 内存信息 总内存: MemTotal: 16264640 kB空闲内存: MemFree: 10240000 kB可用内存: MemAvailable: 14500000 kB注意这里读取了/proc/meminfo——这是 Linux 特有的虚拟文件系统在 Windows 原生环境下是无法运行的。而在 WSL 中它完美运行。—## 方法二使用 Cygwin 模拟 POSIX 环境如果你不想用 WSL比如你的 Windows 版本太旧或者需要更完全的兼容性可以试试Cygwin。Cygwin 是一个在 Windows 上模拟 POSIX 环境的工具它提供了一整套 GNU 工具链让你可以编译和运行 Linux 程序。### 1. 安装 Cygwin前往 cygwin.com 下载安装程序安装时选择以下包-gcc-core(GNU C 编译器)-python3-make### 2. 编译并运行 C 语言示例写一个简单的 C 程序使用 Linux 的fork()系统调用Windows 原生不支持。创建文件fork_demo.cc#include stdio.h#include unistd.h // 包含 fork() 函数int main() { pid_t pid; printf(父进程: 我的 PID 是 %d\n, getpid()); // 创建一个子进程 pid fork(); if (pid 0) { // fork 失败 fprintf(stderr, fork 失败!\n); return 1; } else if (pid 0) { // 子进程代码 printf(子进程: 我的 PID 是 %d, 父进程 PID 是 %d\n, getpid(), getppid()); } else { // 父进程代码 printf(父进程: 子进程 PID 是 %d\n, pid); // 等待子进程结束 wait(NULL); printf(父进程: 子进程已结束\n); } return 0;}在 Cygwin 终端中编译运行bashgcc fork_demo.c -o fork_demo./fork_demo输出示例父进程: 我的 PID 是 1234父进程: 子进程 PID 是 1235子进程: 我的 PID 是 1235, 父进程 PID 是 1234父进程: 子进程已结束注意fork()是 POSIX 系统调用在原生 Windows 中无法使用。而 Cygwin 通过模拟机制让它成功运行。—## 方法三使用 Docker Desktop进阶方案如果你需要运行完整的 Linux 容器环境Docker Desktop 是最好选择。它底层使用了 WSL 2 或 Hyper-V但提供了更方便的图形界面。1. 安装 Docker Desktop for Windows2. 在设置中启用 WSL 2 后端3. 创建一个Dockerfile并构建镜像示例DockerfiledockerfileFROM ubuntu:22.04RUN apt-get update apt-get install -y python3COPY sysinfo.py /app/sysinfo.pyCMD [python3, /app/sysinfo.py]构建并运行bashdocker build -t sysinfo .docker run --rm sysinfo这样你就在 Windows 上运行了一个完整的 Linux 容器程序。—## 总结今天你学会了三种在 Windows 上运行 Linux 程序的方法| 方法 | 适用场景 | 难度 | 性能 ||------|----------|------|------|| WSL | 日常开发、脚本运行 | ⭐ | 极高 || Cygwin | 老旧系统、POSIX 兼容 | ⭐⭐ | 中等 || Docker | 容器化部署、多环境 | ⭐⭐⭐ | 高 |我的推荐- 如果你只是偶尔跑个 Linux 脚本首选WSL轻量又高效。- 如果需要编译 POSIX 程序选Cygwin更稳妥。- 如果要做微服务或 DevOps上Docker准没错。现在就去试试吧Windows 不再是你拥抱 Linux 的绊脚石了。
企业数字化 ERP 产品动态
相关推荐
C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景 C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
在C#的演进历程中,类型系统始终是性能优化的核心战场。从C# 7.0引入元组和模式匹配开始,到C# 14的协变与逆变增强,每一次迭代都在减少装箱拆箱、降低内存分配、提升… · 2026/11/2 9:25:30
GoCourse测试策略:单元测试、集成测试与性能测试全攻略 GoCourse测试策略:单元测试、集成测试与性能测试全攻略 【免费下载链接】GoCourse Go language course 项目地址: https://gitcode.com/gh_mirrors/go/GoCourse
GoCourse作为全面的Go语言课程项目,提供了从基础语法到高级特性的完整学习路径。在软… · 2026/11/1 18:24:10
办理哪有低压电工作业书需要什么材料 低压电工证在哪考?报名流程全知道,别再被中介坑了 你是不是也遇到过这样的情况:网上搜“哪有低压电工作业书”,结果一堆中介广告,价格参差不齐,还担心是不是假证?别急,今天咱们就从头讲清楚,怎么报名、在哪里报名,还能避坑。作为一个在南阳卧龙区转… · 2026/11/16 1:19:32
之前考的证在外省能不能转过来?电工作业工具精选良心建议 之前考的证在外省能不能转过来?电工作业工具精选良心建议 之前考的证在外省能不能转过来?这几乎是每个考了特种作业证的同行最关心的问题。尤其是干了几年电工的你,换个城市打工或者创业,证书能不能用上就成了关键。其实,这事儿在政策上已经说得很清楚了… · 2026/11/16 1:19:32
低压电工证电路题口诀值不值得考?别怕考不过白交培训费 低压电工证电路题口诀值不值得考?别怕考不过白交培训费 你是不是也这样想,花了钱培训,结果考试还是没过,心里特别难受?低压电工证考试中,电路题一直让很多人头疼,特别是初次报考的新人。**值不值得考?**其实不是问题值不值得,而是你有没有掌握对… · 2026/11/16 1:19:32
莱西特种工报名真实经历:外省证能不能转过来?看过来! 莱西特种工报名真实经历:外省证能不能转过来?看过来! 之前考的证在外省能不能转过来?这个问题我听得太多了,我自己也亲身经历过。去年在三门峡工地干电工,手里拿着河南的低压电工证,结果到了莱西这边,项目经理说不能直接上岗,必须重新办证。当时我就… · 2026/11/16 1:19:32
南昌市电工证在哪里办怎么报名 南昌市电工证在哪里办怎么报名 证书过期了不知道怎么复审延期,耽误了工作还被单位扣钱?别急,下面一步步教你解决。如果你在南昌市或者周边地区从事电工相关工作,现在必须了解清楚【南昌市电工证在哪里办】以及【怎么报名】的流程,避免走弯路。… · 2026/11/16 1:18:32
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
电工证培训的通知在哪考?别再被中介骗了 电工证培训的通知在哪考?别再被中介骗了 你是不是还在为 电工证培训的通知在哪考 发愁?网上搜了一堆信息,结果要么是挂羊头卖狗肉的培训机构,要么就是打着“包过”旗号的骗子?别急,今天我来给你讲讲, 电工证培训的通知… · 2026/11/16 0:00:34
电工证去哪个部门考核值不值得考 信阳转岗人真实经历分享 电工证去哪个部门考核值不值得考 信阳转岗人真实经历分享 怕考不过白交培训费?你不是一个人,信阳的李师傅去年刚转岗做电工,就因为没搞清楚电工证去哪个部门考核,差点交了8000块的培训费。别急,下面这份实操考试全攻略,告诉你电工证到底值不值得考… · 2026/11/16 0:00:34
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05