gpt4 book ai didi

STRACE 输出的澄清

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:00 25 4
gpt4 key购买 nike

我正在研究这个问题并决定自己实现该程序。

Interpreting STRACE output - pipes and forks

strace 输出对我来说是不同的:

execve("./fork", ["./fork"], [/* 61 vars */]) = 0
arch_prctl(ARCH_SET_FS, 0x173f880) = 0
pipe([3, 4]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x173fb50) = 2968
execve("/usr/bin/wc", ["wc", "-l"], [/* 61 vars */]) = 0
arch_prctl(ARCH_SET_FS, 0x7f4a4738e740) = 0
Process 2968 attached
[pid 2968] execve("/bin/ls", ["ls"], [/* 61 vars */]) = 0
[pid 2968] arch_prctl(ARCH_SET_FS, 0x7f1954bd0840) = 0
[pid 2968] exit_group(0) = ?
5
[pid 2967] exit_group(0) = ?
[pid 2967] +++ exited with 0 +++
+++ exited with 0 +++

你能解释一下为什么输出不同吗?它在做同样的事情吗?

非常感谢。

最佳答案

当您处理多个进程时,设计会很活泼——不能保证父进程或子进程会以任何顺序执行。两个输出都没有错。

在您的情况下,看起来父级在子级运行之前设法执行了更多系统调用。在引用线程中,子线程执行得更快。

关于STRACE 输出的澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36016345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com