通过窗口从C++代码运行 WSL 命令

Running WSL command from C++ code over windows

本文关键字:运行 WSL 命令 代码 C++ 窗口      更新时间:2023-10-16

我在窗口中运行C ++代码,我想从中运行wsl上的命令。

以下是命令:

ShellExecuteA(NULL, "open", "cmd", "bash -c "rm -f /tmp/xyz.log"" , NULL, SW_SHOW);

system("start "bash -c "rm -f /tmp/xyz.log""");

我尝试了上述两种方法,但它不起作用。尽管这些命令适用于 WSL 命令提示符。

我试图复制这个并立即遇到这个问题。在(相当(有点混乱之后,我找到了这个链接,并意识到我的测试项目的目标是 x86 而不是 x64 .咄......

wsl.exebash.exe是64位文件,存储在c:WindowsSystem32中。如果您尝试从 x86 应用程序运行它们,它们似乎丢失了。这是因为 Windows 向 32 位应用程序显示不同的32 位特定c:WindowsSystem32文件夹。64 位 System32 文件夹将显示在C:WindowsSysnative下。

简单的解决方案是将目标更改为 x64。一旦完成,即使

system("wsl ls -la");

system("bash -c ls -la");

只是工作。

对于 x86 应用程序,解决方案是使用Sysnative中的绝对路径,例如:

system("c:/windows/sysnative/bash -c ls -la");

system("c:/windows/sysnative/wsl -c ls -la");