我们用system()调用shell很容易就可以办到了,但是我们往往想把这个数量存到一个整形变量里面,因为system调用之后会把结果定向到控制台。
我找了半天吧system定位到标准输出的方法,无奈没找到,所以只能先把它定向到一个file里面,这样我从file里面可以获取这个数值。
1.具体实现:
#include <iostream> #include <sys/stat.h> #include <fstream> system("rm -rf p_cnt.txt"); system("ps gaux | grep MyTest | grep -v grep | wc -l > p_cnt.txt"); ifstream fin("./p_cnt.txt"); string num = "0"; getline(fin,num,'\n'); fin.close(); int n = atoi(num.c_str()); cout<< n <<endl;
先放在一个p_cnt.txt文件中,然后写进去,然后就可以了。
2.这样一个程序有何用处?
有些过程化的程序有时会被一个脚本定时的调用,如果这个程序没有执行完而被再次调用,那么该程序的进程必然会增加,严重时可以导致这个程序开很多进程,情况会因此而加剧,导致卡主的进程越来越多。我们可以通过这个方式来控制这个程序进程的数量。比如加上个判断:
if(n>MAX_NUM) exit(-1);
;)