You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

execvp系统调用的工作原理是什么?无fork实验遇困惑求解

用execvp做实验的小总结

最近在研究StackOverflow上的一个问题时,突然觉得这是巩固Unix系统调用知识的绝佳机会。于是我专门针对execvp(特意没搭配fork使用)做了些实验,过程中遇到了点困惑,索性写了4个测试程序来逐一验证。

测试程序1

#include <stdio.h>
int main() {
    //printf("Doge\n");
    execvp("ls");
    printf("Foo\n");
    return 0;
}

这个程序的运行结果完全符合预期:它会打印当前目录的所有内容,而代码里的printf("Foo\n")根本不会执行。原因其实很简单——当execvp成功调用后,当前进程的整个代码段都会被新启动的程序(这里是系统自带的ls)完全替换掉,原程序里execvp之后的所有代码都没有机会再运行了。

后续的几个测试程序我也会慢慢整理出来,一步步拆解execvp的运行逻辑~

内容的提问来源于stack exchange,提问作者Srini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:08:12