标签: windows-subsystem-for-linux

将 WSL2 文件系统上的项目与 NetBeans 结合使用

我在 Windows 10 上使用WSL2(适用于 Linux 的 Windows 子系统) Ubuntu 18.04。我还使用 NetBeans 12.1。

如何使用 NetBeans 打开位于 WSL 文件系统上的项目?在 Windows 资源管理器中,文件系统可通过 访问\\wsl$,但如何让 NetBeans 打开该文件系统?

netbeans windows-subsystem-for-linux wsl-2 netbeans-12

2
推荐指数
1
解决办法
2816
查看次数

WSL Ubuntu 20.04.3 错误:环境中未设置 XDG_RUNTIME_DIR

我在 Windows 10 上使用 Ubuntu 20.04.3 WSL。我将我的 C++ 程序(使用 SDL2 库)编译为名为“main”的可执行文件。

g++ -o main main.cpp CApp.cpp -lSDL2 -std=c++17
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下命令运行可执行文件时:

./main
Run Code Online (Sandbox Code Playgroud)

它返回:

error: XDG_RUNTIME_DIR not set in the environment.
Run Code Online (Sandbox Code Playgroud)

c++ windows ubuntu sdl-2 windows-subsystem-for-linux

2
推荐指数
1
解决办法
3万
查看次数

即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

我在 WSL Ubuntu 上使用 g++。我使用 git 克隆了 GLFW 存储库,使用ccmake命令来配置和生成二进制文件,然后make在“build”目录中使用以最终创建文件.a。我安装了所有与 OpenGL 相关的库/usr/ld(我不记得到底安装了哪些库,因为我必须安装这么多。无论如何,g++ 命令有效,所以我认为它是成功的)。后来我在VS Code上做了一个项目,如下所示:

在此输入图像描述

GLFW 包含文件夹来自上述克隆的存储库,GLAD 和 KHR 包含文件夹来自glad.dav1d.de,我将 GL 版本(在 API 下)设置为3.3,将 Profile 设置为Core

在 中main.cpp,我放置了一段用于初始化 GLFW 的简单代码片段:

#include <iostream>
#include <glad/glad.h>
#include <GLFW/glfw3.h>

int main()
{
    // Initialize GLFW
    if (!glfwInit()) {
        std::cerr << "Failed to initialize GLFW" << std::endl;
        return 1;
    }
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    std::cout << "Success" << …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glfw windows-subsystem-for-linux ubuntu-18.04

2
推荐指数
1
解决办法
6813
查看次数

memset 将某些元素设置为*几乎*零或 nan

我有一行memset(C, 0, N*M);,其中 C 是双精度矩阵。(我正在使用 WSL。)

但是,如果我查看 gdb,矩阵中的某些元素将设置为其中之一-nan(0xffffffffffff8),而其他元素将设置为例如9.0096750001652956e-314

第一个没有给出任何错误,但 a+=似乎没有改变任何东西(或者至少似乎没有使 nan 的东西消失),而第二个是一个问题,如果元素没有改变或只改变有+= 0,因为比较if (0 == C[i][j])失败。

如果我手动将值设置为 0,则根本不会出现这些问题。

这是 WSL 的事情,还是有什么memset我不明白的事情?

c windows-subsystem-for-linux

2
推荐指数
1
解决办法
303
查看次数

无法从 wsl 连接到 mySQL 服务器

我在 Windows 计算机上安装了 mySQL 服务器,还安装了 WSL,这样我就可以在 Windows 计算机上使用 Linux 的所有优点。我有一个任务是使用 Express 来创建一个连接到数据库的 JS api,所以我运行我的 mySQL 服务器,一切都运行正常,但是当我使用 WSL 启动 JS apinode index.js并尝试连接到数据库时,它会抛出一个错误sql错误

Server running on port 8080 , http://localhost:8080
/mnt/c/Users/ngkil/Documents/VSCode/WebDevAssignment2022/Backend/index.js:43
                if (err) { throw err; }
                           ^

Error: connect ECONNREFUSED 127.0.0.1:3306
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1195:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 3306,
  fatal: true
}

Node.js v18.1.0
Run Code Online (Sandbox Code Playgroud)

如果我从 CMD 运行相同的命令,node index.jsAPI 工作正常

Server running on port 8080 , http://localhost:8080
Connected to database …
Run Code Online (Sandbox Code Playgroud)

mysql node.js windows-subsystem-for-linux

2
推荐指数
1
解决办法
2921
查看次数

将 Scapy L3socket 与 WSL 结合使用时,协议不支持地址族

我尝试使用 Scapy 配置 L3 套接字,如下所示:

from scapy.all import *
soc = conf.L3socket(iface="eth1")
Run Code Online (Sandbox Code Playgroud)

当我在 Ubuntu VM 中使用此代码时,一切正常,但是当我在 WSL 中使用此代码时,出现错误:

/usr/local/lib/python3.10/dist-packages/scapy/layers/ipsec.py:471: CryptographyDeprecationWarning: Blowfish has been deprecated
  cipher=algorithms.Blowfish,
/usr/local/lib/python3.10/dist-packages/scapy/layers/ipsec.py:485: CryptographyDeprecationWarning: CAST5 has been deprecated
  cipher=algorithms.CAST5,
Traceback (most recent call last):
  File "........./python/test.py", line 2, in <module>
    soc = conf.L3socket(iface="eth1")
  File "/usr/local/lib/python3.10/dist-packages/scapy/arch/linux.py", line 486, in __init__
    self.ins = socket.socket(
  File "/usr/lib/python3.10/socket.py", line 232, in __init__
    _socket.socket.__init__(self, family, type, proto, fileno)
OSError: [Errno 97] Address family not supported by protocol
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

sockets scapy python-3.x windows-subsystem-for-linux wsl-2

2
推荐指数
1
解决办法
4289
查看次数

调用 WSL 命令后保持 Windows 终端选项卡打开

我正在尝试在Windows Terminal中打开WSL (Ubuntu) 选项卡,然后使用 WSL 在该选项卡中运行命令。我为此使用以下 PowerShell 命令:

wt new-tab -p "WSL (Ubuntu)" wsl echo "hallo"
Run Code Online (Sandbox Code Playgroud)

问题是,echo运行后,选项卡立即关闭。有办法让它保持打开状态吗?

powershell windows-subsystem-for-linux windows-terminal wsl-2

2
推荐指数
1
解决办法
892
查看次数

Windows WSL 上的 Linux 中的 AF_UNIX 套接字无法绑定到 /mnt 文件:错误 95,不支持操作

我们需要将 Windows 客户端应用程序连接到 Linux 服务器应用程序。Linux 端在 Windows 10 (10.0.19044) 中的 WSL2 之上运行。

我们想要使用 UNIX 域套接字,并遵循https://devblogs.microsoft.com/commandline/windowswsl-interop-with-af_unix/中的指导

服务器程序成功绑定到“本地”文件系统中的文件(例如/tmp/mysock),但无法绑定到已安装驱动器中的“Windows 端”文件(例如/mnt/c/mysock) ,这是服务器可以接受来自 Windows 端 AF_UNIX 套接字的连接所必需的。

我得到的 errno 是 95 :“不支持操作”我尝试使用 sudo 运行,但结果相同。

知道发生了什么事吗?

服务器代码是:

#include <sys/socket.h>
#include <sys/un.h>

#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <unistd.h>
#include <errno.h>

#undef NDEBUG

// filename comes as command-line argument
int main(int argc, char *argv[])
{
    struct sockaddr_un addr;
    int ret = -1;
    
    printf("Starting NVC_LINUX...\n");
    
    assert(argc == 2);
    char *filename = argv[1]; …
Run Code Online (Sandbox Code Playgroud)

linux bind unix-socket windows-subsystem-for-linux wsl-2

2
推荐指数
1
解决办法
2442
查看次数

使用 VSCode 时 WSL 不断崩溃

使用 Windows 应用商店中的 blanco Ubuntu WSL 安装,从那里运行 VSCode,并在/home文件夹中存储库。未安装 WSL 扩展。

它已经工作了一段时间,但最终总是导致 WSL 崩溃。VSCode 无法连接,因为我也无法再通过终端连接到 WSL 安装。

在此输入图像描述

然后我最终使用wsl --shutdowncmd重新启动 Docker 以使其再次工作一段时间。但它不断回来。

有任何想法吗?

docker visual-studio-code windows-subsystem-for-linux

2
推荐指数
1
解决办法
2628
查看次数

信号处理程序无限循环:为什么?

编辑:
\n我在第一次接触 signal.h 后就匆忙地写了这样的内容,所以我最初的问题有点到处都是,并且被很多更混乱的部分所困扰,这可能会让它变得更烦人/更困难回答。我似乎还误解了信号 \xe2\x80\x93 的“屏蔽”部分,我似乎认为屏蔽意味着信号将被丢弃,但实际上,我认为发生的情况是处理程序是\没有被触发,但信号传输并“保持”(重复的信号被合并),直到从处理程序返回。
\n在这里重新措辞以突出显示我原始问题中仍然让我困惑的部分(原始问题仍然在下面,以免在没有明确上下文的情况下留下现有评论等):

\n

据我所知,信号处理程序是在内核模式到用户模式转换时触发的。引用:
\n男人7号信号摘录
\n(万一图像损坏,无论出于何种原因\xe2\x80\x93,它引自man 7 signal:“每当从内核模式转换到用户模式执行时[...]内核检查是否有一个待处理的未阻塞信号,进程已为其建立了信号处理程序。”)

\n

我写下了下面的代码:

\n
const char* ON_SIGTSTP_ENTRY = "Got SIGTSTP.\\n";\nconst char* ON_SIGTSTP_EXIT = "Exiting SIGTSTP handler.\\n";\nconst char* ON_SIGINT_ENTRY = "Got SIGINT.\\n";\nconst char* ON_SIGINT_EXIT = "Exiting SIGINT handler.\\n";\n\nvoid ctrlZHandler(int sig_num) {\n    write(1, ON_SIGTSTP_ENTRY, strlen(ON_SIGTSTP_ENTRY));\n    kill(getpid(), SIGINT);\n    write(1, ON_SIGTSTP_EXIT, strlen(ON_SIGTSTP_EXIT));\n}\n\nvoid ctrlCHandler(int sig_num) {\n    write(1, ON_SIGINT_ENTRY, strlen(ON_SIGINT_ENTRY));\n    kill(getpid(), SIGTSTP);\n    write(1, ON_SIGINT_EXIT, strlen(ON_SIGINT_EXIT));\n}\n\nint main() {\n    if(signal(SIGTSTP, ctrlZHandler) == SIG_ERR) {\n        cout << "Failed to set SIGTSTP handler." << …
Run Code Online (Sandbox Code Playgroud)

c ubuntu signals windows-subsystem-for-linux

2
推荐指数
1
解决办法
193
查看次数