在Windows上从C ++代码运行WSL命令

时间:2018-10-05 07:48:09

标签: c++ windows-subsystem-for-linux

我正在要从wsl上运行命令的Windows中运行c ++代码。

以下是命令:

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

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

我尝试了以上两种方法,但没有用。尽管这些命令可在WSL命令提示符下使用。

1 个答案:

答案 0 :(得分:1)

我试图复制它并立即遇到此问题。经过一番困惑之后,我发现this link并意识到我的测试项目的目标是x86而不是x64。 h ...

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

简单的解决方案是将目标更改为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");