我也不知道怎么回事,在后台有一个随机读写lock的程序忘了kill的情况下,测试程序一直能打出长度一样、顺序一样、甚至内容也一样的log,企图骗我这就是执行路径。CS套路深,我要回农村

假设我获得了系统调用的顺序和所有系统调用之后的进程状态。

image-20240702214113221

显然是B。

1
ssite_t write(int fd, const void buf[.count], size_t count);

注意 buf 是 const 意思是写之前和写之后是同一个状态。但是 $\mathbb{A}$ 状态下,write 的参数未必准备好了。只有到系统调用的前一刻,其所有的参数才被准备好。想要从 $\mathbb{B} $ 之前获取参数并不是什么问题,关键在于「向前多少」