1

system 相当简单:

int system(const char *command);

system("ps -aux");

2 popen

popen有两个参数,第一个是命令,2是打开流的方式; 返回一个文件流——popen:让进程看起来像文件  http://www.cnblogs.com/RichardLee/articles/2371765.html

区别:

linux下通过C执行命令的时候一半都是使用system()方法,但是该方法执行命令返回的值是-1或0,而有时候我们需要得到执行命令后的结果。可以使用管道实现

输出到文件流的函数是popen()

3 exerse  可以在一个进程插入另外一个进程执行,但是又不像fork()一样产生一个子进程,execve()插入的进程和原进程共享进程号,就好像执行这进程就像执行过程调用一般随意

int execve(const char *filename, char *const argv[], char *const envp[]);    1 要执行的文件名   2 参数    3 环境变量

execve 这种方式有些特别,必须传人一个shell脚本文件(这个文件第一行必须是#!/bin/bash)。。

char *newargv[] = { "/opt/software/lktest/c" };
char *newenviron[] = { NULL };
execve("/bin/ls" , newargv, newenviron);      --- 如果是系统命令,需要其完整路径、不然没有输出———— 也不报错!

./execve.o ./execve_sscrs.sh
./execve.o execve_sscrs.sh 两种方式都是可行的。
4
execl  跟exerse类似
extern int execl(_const char *_path,const char *_argv[],...,NULL)
简单解释:函数execl()返回值定义为整形,如果执行成功将不返回!执行失败返回-1。
                  参数列表中char *_path为所要执行的文件的绝对路径,从第二个参数argv开始为执行新的文件所需的参数,最后一个参数必须是控指针(我为了简便用NULL代替)。
此时最好引入#include <unistd.h>, 否则有警告。
 execl("/usr/bin/sh", "sh", "-c","ls ~", 0);

最新文章

  1. python基础之函数
  2. MySQL的SSL加密连接与性能开销
  3. XtraScrollableControl 滚动条控件随鼠标滚动
  4. Orm图解教程
  5. DataGridView 的cell赋值没有线程间访问的限制吗?
  6. OCI的结果输出
  7. win7定时任务
  8. linux之cut用法
  9. DevOps - Development And Operations
  10. wxPython缩放图片控件的一个小例子
  11. java设计模式--行为型模式--状态模式
  12. zend framework virtualhost设置方法
  13. ios 串
  14. JavaWeb框架的基石
  15. php随机获取验证码
  16. 小明搬家_NOI导刊2010提高(05)
  17. HttpWebRequest post 提交 C#的WebBrowser操作frame如此简单 WebClient 提交
  18. echart line 初始化隐藏legend
  19. 记一次Castle报错
  20. Qt中使用Json

热门文章

  1. jquery基础事件
  2. ubuntu14.04设置terminal配色方案以配合使用vim的Solarized插件
  3. Android中的桌面快捷方式
  4. 1211php面向对象
  5. Git 源代码管理工具
  6. &lt;数据结构与算法&gt;之字符串,散列,布隆过滤器。
  7. Django学习中的问题总结
  8. 未注册wang域名批量查询工具
  9. 带回调函数的js运动框架
  10. [XAF] 多级联列表显示