我正在使用以下命令来判断在我的一个程序执行期间的系统调用次数:
strace -e trace=<syscall> -c ./program [ARGS]
如果我用fork()
替换<syscall>
,它总共返回0个调用,就像现在用clone()
实现的那样.但是,如果它总是返回0,为什么它仍然被接受为系统调用?它不只是一个真正的syscall clone()
的包装器吗?
我预计strace
命令将返回trace=fork()
的错误,例如:
strace: invalid system call 'fork'
我只是不明白为什么它仍然被接受为一个有效的参数,如果它实际上只是clone()
.我错过了什么?如果参数只接受系统调用,为什么在strace
中仍然被接受?
我判断过的链接: