linux中system和exec函数的区别

如题所述

system是用shell来调用程序=fork+exec+waitpid,而exec是直接让你的程序代替用来的程序运行。
system 是在单独的进程中执行命令,完了还会回到你的程序中。而exec函数是直接在你的进程中执行新的程序,新的程序会把你的程序覆盖,除非调用出错,否则你再也回不到exec后面的代码,就是说你的程序就变成了exec调用的那个程序了。
温馨提示:内容为网友见解,仅供参考
无其他回答

linux中system和exec函数的区别
system是用shell来调用程序=fork+exec+waitpid,而exec是直接让你的程序代替用来的程序运行。system 是在单独的进程中执行命令,完了还会回到你的程序中。而exec函数是直接在你的进程中执行新的程序,新的程序会把你的程序覆盖,除非调用出错,否则你再也回不到exec后面的代码,就是说你的程序就变成了ex...

Linux 启动进程的3个方法
本文介绍了在Linux系统中实现进程启动的三种方法,并对其特点进行了对比。具体如下: 方法一:system函数 system函数通过启动shell进程并执行shell命令来开启新进程。此方法简便,但效率相对较低,因为需要先启动shell进程。方法二:exec系列函数 exec系列函数用于替换当前进程,启动新进程,且该新进程将不再...

Linux启动新进程的几种方法及比较
exec函数比system函数更有效。 exec系列函数的类型为: #include char **environ; int execl (const char *path, const char *arg0, ..., (char*)0); int execlp(const char *file, const char *arg0, ..., (char*)0); int execle(const char *path, const char *arg0, ..., (char*)0, char...

如何用php运行linux命令,并获取返回信息?
可以用system(),exec(),passthru()这三个函数实现 虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的:system() 输出并返回最后一行shell结果。exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。passthru() 只调用命令,把命令的运行结果原样地直接...

在linux系统下实现对system() 函数对fork() ,exec(),waitpid()函数的调 ...
(1)system()其实就是对fork()和exec()函数族等的封装。(2)fork()是用来产生子进程的,是现在我知道的唯一一个返回两个值的函数(有过有另外的,麻烦网友指出),返回-1表示执行失败;否则返回大于0的值时,表示是子进程的进程号,返回0时,表示父进程创建子进程成功。(3)exec()不是一个...

如何linux 程序中启用其他进程,非阻塞,非popen
在Linux程序中启动其他进程可以用system函数,这个函数会等待它启动的那个程序结束才返回,所以它是一个阻塞调用。还有一种非阻塞的启动外部程序的方法,稍微复杂一点,是运用Linux的exec系列函数,之所以说系列函数是因为有不同的变种,只是参数的形式不同而已,其实完全是一样的,exec系列函数的行为是将当前...

linux下的命令都是干什么用的?
这三个函数分别调用了sys_fork、sys_vfork、sys_clone,最终都调用了do_fork函数,差别在于参数的传递和一些基本的准备工作不同。可见这三者最终达到的最本质的目的都是创建一个新的进程。在这里需要明确一下,Linux内核中没有独立的“线程”结构,Linux的线程就是轻量级进程,换言之基本控制结构和Linux的...

linux下怎样用c语言调用shell命令
实际上他们的功能都是几乎相同的, 由于要用于接受不同的参数所以要用不同的名字区分它们, 毕竟c语言没有函数重载的功能嘛..可是实际上它们的命名是有规律的:exec[l or v][p][e]exec函数里的参数能够分成3个部分, 运行文件部分, 命令参数部分, 环境变量部分.比如我要运行1个命令 ls ...

我想在linux下写一个c程序调用linux的可执行文件或者程序,怎么做_百度...
int system(const char *string);参数string是将要执行的程序文件名或路径,如果是启动一个命令就是一个命令字符串。还有一种执行外部程序的方法是exec系列函数,一般是在fork的子进程里面调用exec系列函数,那主进程里直接调用exec系列不行吗,为什么要fork再在子进程里调用呢?因为exec系列的函数(包括...

怎么在linux中调用命令行中的命令,比如我想在一个程序中用命令行运行...
int system(const char *string);参数string是将要执行的程序文件名或路径,如果是启动一个命令就是一个命令字符串。还有一种执行外部程序的方法是exec系列函数,一般是在fork的子进程里面调用exec系列函数,那主进程里直接调用exec系列不行吗,为什么要fork再在子进程里调用呢?因为exec系列的函数(包括...

相似回答
大家正在搜