📅  最后修改于: 2023-12-03 14:47:49.849000             🧑  作者: Mango
在Linux环境中,程序员可以使用system()和execl()来运行一个新的进程。这两个函数都可以在新的进程中运行一个可执行文件,但是二者还是有很多区别的。下面详细介绍一下system()和execl()调用之间的区别。
system()函数用于在当前进程中运行命令行。该函数的原型如下:
#include <stdlib.h>
int system(const char *command);
其中,command参数是要执行的命令行字符串。system()函数将创建一个新的进程,执行指定的命令,等待命令执行完毕,然后返回控制到主程序中。
system()函数的返回值有两种情况:
system()函数具有以下特性:
execl()函数用于在当前进程中执行指定的可执行文件。该函数的原型如下:
#include <unistd.h>
int execl(const char *path, const char *arg0, ... /*, (char *)0 */);
其中,path参数是可执行文件路径,arg0是程序名,剩下的参数列表是附加到程序中的命令行参数。
execl()函数将当前进程所在的地址空间全部替换成指定的可执行文件。程序会从指定的文件的第一行开始执行,并将附加的命令行参数传递给可执行文件。
execl()函数的返回值有两种情况:
execl()函数具有以下特性:
两个函数的区别可以总结如下: