比system在应用中的好处是;可以获取运行的输出结果
从之前exec族函数所知,exec函数族的函数执行成功后不会返回
#includeFILE *popen(const char *command, const char *type); int pclose(FILE *stream);
command:是一个指向以NULL结束的shell命令字符串的指针。这行命令将被传到bin/sh并使用-c标志,shell将执行这个命令
mode:只能是读或者写中的一种,如果type是“r”则文件指针连接到commend的标准输出;如果type是“w”则文件指针连接到command的标准输入
#include#include #include //size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); int main(void) { char ret[1024] = {0}; system("ps"); printf("ret=%sn",ret); return 0; }
#include#include #include //size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); int main(void) { char ret[1024] = {0}; FILE *fp; fp = popen("ps","r"); int n_read = fread(ret,1,1024,fp); printf("read ret %d byte,ret=%sn",n_read,ret); return 0; }
打印出来的结果
read ret 146 byte,ret= PID TTY TIME CMD 26549 pts/2 00:00:00 bash 27188 pts/2 00:00:00 a.out 27189 pts/2 00:00:00 sh 27190 pts/2 00:00:00 ps



