我想将当前目录更改为 shell 脚本到包含特定常规文件的目录中。我发现以下技巧适用于mksh和busybox 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太迂腐?
我正在学习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) 我想编写 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 代码,并将它们都视为“成功”?
我正在使用返回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必须事先由标准库使用的同一分配器分配。
我找不到标准库使用的分配器。