小编KAc*_*ion的帖子

“/path/file/..”如何符合POSIX?

我想将当前目录更改为 shell 脚本到包含特定常规文件的目录中。我发现以下技巧适用于mkshbusybox sh

path=/path/to/regular/file
cd $path/.. 
Run Code Online (Sandbox Code Playgroud)

但不是在 GNU Bash 中:

bash: cd: /path/to/regular/file/..: Not a directory
Run Code Online (Sandbox Code Playgroud)

这个技巧不兼容posix,还是Bash太迂腐?

bash posix cd sh ash

10
推荐指数
1
解决办法
218
查看次数

为什么此代码在打开地址随机化后崩溃?

我正在学习amd64汇编程序,并尝试实现一个简单的Unix过滤器。由于未知的原因,甚至简化为最低版本(下面的代码),它也会随机崩溃。

我试图在GNU调试器(gdb)中调试该程序。在gdb的默认配置中,该程序运行良好,但是如果启用地址随机化(set disable-randomization off),该程序将开始崩溃(SIGSEGV)。清单中标记了有问题的说明:

format ELF64 executable

sys_read                        =       0
sys_write                       =       1
sys_exit                        =       60

entry $
foo:
    label .inbuf   at rbp - 65536
    label .outbuf  at .inbuf - 65536
    label .endvars at .outbuf
    mov rbp, rsp

    mov rax, sys_read
    mov rdi, 0
    lea rsi, [.inbuf]
    mov rdx, 65536
    syscall

    xor ebx, ebx
    cmp eax, ebx
    jl .read_error
    jz .exit

    mov r8, rax  ; r8  - count of valid bytes in input buffer
    xor r9, r9   ; …
Run Code Online (Sandbox Code Playgroud)

linux x86-64 fasm

7
推荐指数
2
解决办法
72
查看次数

是否可以使用 Servant 返回不同的 http 代码?

我想编写 API 端点,根据传入参数和外部世界的状态返回不同的 http 代码。在python中,它看起来像以下(wsgi):

def application(environ, start_response):
    if check_foo():
        start_response("200 OK", [])
        return b'42'
    else:
        start_response("201 Created", [])
        return b'43'
Run Code Online (Sandbox Code Playgroud)

如何使用Servant做到这一点并不陌生:

type UserAPI = Verb 'GET 201 '[JSON] Int :<|> Verb 'GET 200 '[JSON] Int

server :: Server UserAPI
server = pure 42 :<|> pure 43
Run Code Online (Sandbox Code Playgroud)

编译并运行,但只返回 42,http 代码 201。当然,我可以用ServerError偷偷摸摸任何我想要的东西,但是这样我就失去了仆人的所有优点,并且必须自己进行序列化。

或者,我可以将 200 和 201 之间的区别推到返回数据中,但保持 http 代码的信息量对我来说很重要。

那么,有没有办法让一个端点返回不同的两个不同的 http 代码,并将它们都视为“成功”?

haskell servant

7
推荐指数
0
解决办法
92
查看次数

使用分配的字符串创建Rust字符串是否安全?

我正在使用返回malloced字符串的C API :

char *foo(int arg);
Run Code Online (Sandbox Code Playgroud)

是否可以在Rust代码中重复使用该内存而不进行O(n)复制?

let p: *mut libc::c_char = foo(42);
let len = strlen(p);
let s: String = String.from_raw_parts(p, len, len);
Run Code Online (Sandbox Code Playgroud)

该文件说

所需的内存ptr必须事先由标准库使用的同一分配器分配。

我找不到标准库使用的分配器。

string unsafe rust

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

标签 统计

ash ×1

bash ×1

cd ×1

fasm ×1

haskell ×1

linux ×1

posix ×1

rust ×1

servant ×1

sh ×1

string ×1

unsafe ×1

x86-64 ×1