一、exec族函数
execl()在调用后不会返回到原进程;
精彩博文:链接: https://blog.csdn.net/u014530704/article/details/73848573
https://blog.csdn.net/u014530704/article/details/73848573
二、system()函数
system()调用后会返回到原进程继续运行,其实system就是在调用execl函数
#include<stdlib.h>
int system(const char *command);
system()函数的返回值如下:成功,则返回进程状态值;当sh不能执行时,返回127;失败返回-1;
精彩博文:https://www.cnblogs.com/leijiangtao/p/4051387.html
三、popen
不管是execl,还是system都不能获得执行命令后的数据,都会在执行后流失在终端,那么怎样才能获得执行命令的数据呢?—popen();
#include<stdio.h>
FILE *popen(const char *command, const char *type);
int pclose(FILE *stream);
popen不会打印流里面的数据,流里面的数据还需用fread读出;
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(void)
{
char ret[1024]={0};
FILE *fp;
fp=popen("ps","r");
fread(ret,1,1024,fp);
printf("ret=%s\n",ret);
return 0;
}