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
相关产品推荐
相关产品推荐

