如何从strace输出中看出已经设置了将进程链接在一起的命令管道?另外,所有进程都可以相互通信吗?
execve("./mypipes", ["./mypipes"], [/* 57 vars */]) = 0
arch_prctl(ARCH_SET_FS, 0x7ff0f5cbd700) = 0
pipe([3, 4]) = 0
pipe([5, 6]) = 0
clone(Process 32313 attached
child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7ff0f5cbd9d0) = 32313
[pid 32312] clone(Process 32314 attached
child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7ff0f5cbd9d0) = 32314
[pid 32312] clone(Process 32315 attached
child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7ff0f5cbd9d0) = 32315
[pid 32313] execve("/bin/cat", ["cat", "/etc/passwd"], [/* 57 vars */] <unfinished ...>
[pid 32312] exit_group(32315) = ?
[pid 32314] execve("/usr/bin/cut", ["cut", "-f1", "-d:"], [/* 57 vars */] <unfinished ...>
[pid 32313] <... execve resumed> ) = 0
[pid 32314] <... execve resumed> ) = 0
[pid 32315] execve("/usr/bin/sort", ["sort"], [/* 57 vars */]) = 0
[pid 32313] arch_prctl(ARCH_SET_FS, 0x7f4392d83700) = 0
[pid 32314] arch_prctl(ARCH_SET_FS, 0x7fb7fd75e700) = 0
[pid 32315] arch_prctl(ARCH_SET_FS, 0x7fbda4e43700) = 0
[pid 32313] exit_group(0) = ?
Process 32313 detached发布于 2015-03-11 05:29:11
是的,管道系统调用创建2个管道,让我们称它们为parent talk和parent listen。fd是家长通话,fd1是家长监听。子进程从fd读取并写入fd1
https://stackoverflow.com/questions/28973385
复制相似问题