首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STRACE输出的澄清

STRACE输出的澄清
EN

Stack Overflow用户
提问于 2016-03-16 00:02:40
回答 1查看 371关注 0票数 0

我仔细研究了这个问题,并决定自己实施这个程序。

Interpreting STRACE output - pipes and forks

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

代码语言:javascript
复制
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 +++

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

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2016-03-16 10:55:39

当您处理多个进程时,设计的东西将是活泼的--无法保证父进程或子进程将以任何顺序执行。两个输出都没有错。

在您的例子中,看起来父进程在子进程运行之前执行了更多的syscall。在被引用的线程中,子线程的执行速度更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36016345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档