system的实现原理
#include <stdlib.h> int system(const char *command); 功能:执行command程序,成功返回值commad对应程序的终止状态码,失败-1 如果command给NULL,返回非零表示shell终端可用,返回0表示shell终端不可用
-
该函数的实现,底层调用了vfork、exec和waitpid函数,该返回值:
-
如果vfork创建失败,则返回-1
-
如果exec函数执行出错,则会在子进程中执行exit(127)
-
如果都成功,则返回执行command程序的最终的结束状态码
-
-
与vfork的区别:system会等待加载的程序执行完后才返回
-
可以使用system替代vfork+exec的功能,好处是system会把错误处理都处理好