小编chu*_*500的帖子

如何让RUST在后台优雅运行并守护进程?

这就是我想要实现的目标

\n\n
root> ./webserver start   // Does not block the terminal after startup, runs in the background and the process is guarded\nroot> \n
Run Code Online (Sandbox Code Playgroud)\n\n

我当前的实现逻辑\xef\xbc\x9a

\n\n逻辑在后台运行\n\n
root> ./webserver start   // Does not block the terminal after startup, runs in the background and the process is guarded\nroot> \n
Run Code Online (Sandbox Code Playgroud)\n\n

这样rust就会在后台运行,不会阻塞终端,但是rust在后台打印的信息仍然会显示在终端上,退出终端时当前的rust程序也会退出

\n\n进程守护程序逻辑\n\n

我的想法是监听系统的退出信号,不处理退出请求

\n\n
SIGHUP       1          /* Hangup (POSIX).  */                  \nSIGINT       2          /* Interrupt (ANSI).  */                       \nSIGQUIT      3          /* Quit (POSIX).  */                        \nSIGTERM      15         /* Termination (ANSI).  */               \n
Run Code Online (Sandbox Code Playgroud)\n\n

代码:

\n\n …

service daemon rust

8
推荐指数
1
解决办法
8647
查看次数

Cargo:它如何找到要使用的 git 二进制文件

鉴于 git 中的新安全漏洞(快速修补),我想知道如何验证cargo用于克隆存储库的特定 git 二进制文件以验证它是否具有补丁?

https://bugs.chromium.org/p/project-zero/issues/detail?id=2021

git rust rust-cargo

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

为什么我不能让外部类型看起来像 C++ 中的内部类型?

我想维护一个大量使用内部枚举的现有 API,但我需要将枚举分离成它自己的类型:

这是当前的 API:

class Outer {
public:
    enum Inner {
        FIELD1
    };
};
Run Code Online (Sandbox Code Playgroud)

换句话说,用户目前希望使用 来设置Inners Outer::Inner。如果可能,我想在创建新的外部类型时保留名称:

enum Inner {
    FIELD1
};

class Outer {
public:
    typedef Inner Inner;
}
Run Code Online (Sandbox Code Playgroud)

但是 - 它给了我一个编译器错误:

./Playground/file0.cpp:23:19: error: declaration of 'typedef enum Inner Outer::Inner' changes meaning of 'Inner' [-fpermissive]
   23 |     typedef Inner Inner;
      |                   ^~~~~
./Playground/file0.cpp:17:6: note: 'Inner' declared here as 'enum Inner'
   17 | enum Inner {
      |      ^~~~~
Run Code Online (Sandbox Code Playgroud)

如果我只是更改枚举的名称,则一切正常。

#include <cassert>

enum Enum {
    FIELD1
};

class …
Run Code Online (Sandbox Code Playgroud)

c++ typedef inner-classes

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

在 glium 中设置帧重绘率?

我正在尝试使用 Rust 中的 glium 来制作游戏循环。我的目标是让屏幕每秒重绘 60 次。使用我当前的事件循环代码,只有当窗口大小发生变化时才会重新绘制框架。我在 glutin 文档中读到,我需要在某处调用 request_redraw,但我不确定如何/在哪里。到目前为止,这是我的代码:

event_loop.run(move |event, _target, control_flow| match event {
    Event::LoopDestroyed => return,
    Event::WindowEvent {
        window_id: _window_id,
        event: winevent,
    } => match winevent {
        WindowEvent::Resized(physical_size) => display.gl_window().resize(physical_size),
        WindowEvent::CloseRequested => {
            *control_flow = ControlFlow::Exit;
        }
        _ => {}
    },
    Event::RedrawRequested(_window_id) => {
        let mut target = display.draw();
        target.clear_color_srgb(rng.gen(), rng.gen(), rng.gen(), 1.0);
        target.finish().unwrap();
    }
    _ => {}
});
Run Code Online (Sandbox Code Playgroud)

game-loop rust glium

0
推荐指数
1
解决办法
2203
查看次数

标签 统计

rust ×3

c++ ×1

daemon ×1

game-loop ×1

git ×1

glium ×1

inner-classes ×1

rust-cargo ×1

service ×1

typedef ×1