进程控制---system函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程控制---system函数相关的知识,希望对你有一定的参考价值。

system函数是用来在进程中执行 shell 命令的。注意其实 exec 族函数其实也可以用来在进程中执行 shell 命令,但是这两个函数实现执行 shell 命令的原理是完全不同的。
  • system函数相当于是 fork->exec->wait 这样的一个过程,也就是说system函数会调用fork函数来创建一个子进程,然后在子进程中去执行 shell命令,不影响父进程的执行。
  • 而直接利用 exec 族函数来执行 shell命令是将 shell命令的代码段、数据段直接覆盖掉本进程原来的代码段、数据段,原来进程中的代码将永远不会被执行。
=======================================================
下面给出system函数实现的一段源代码:
技术分享
技术分享
从这段代码可以看出system函数各种出错时候的返回值:
  • 当传入的参数为NULL时,返回 1
  • 当fork调用失败时,返回 -1
  • 当execl调用失败时,也就是说shell命令不能执行的时候,返回 127
  • 当 waitpid 函数被信号中断时,返回-1
  • 当正常执行shell命令时,返回shell命令本身退出的状态
 

以上是关于进程控制---system函数的主要内容,如果未能解决你的问题,请参考以下文章

Unix环境高级编程进程控制

Android 逆向Android 进程注入工具开发 ( EIP 寄存器指向 dlopen 函数 | ESP 寄存器指向栈内存 | 调试程序收回目标进程控制权 )

Linux进程控制

linux下的 进程控制 以及常见的进程控制函数

Linux入门:进程控制

Linux入门:进程控制