گاهی لازم است یک برنامه خارجی را از برنامه خودمان اجرا و خروجی آن را استفاده کنیم. این برنامه میتواند یک برنامه اجرایی دیگر یا یکی از ابزارهای سیستم عامل مانند ping یا حتی اجرای یک برنامه java باشد. آنچه که مهم است اجرا شدن از خط فرمان و تولید خروجی متنی است.
زبان ++C برای این کار تابع popen را دارد که با خط فرمان به شکل فایل برخورد میکند. یعنی دستور مد نظرمان را به صورت اسم فایل میدهیم و خروجی اجرای آن را به صورت جریان فایلی میخوانیم.
مثلا برنامه زیر تعداد هستههای CPU را روی سیستمهای عامل لینوکس و ویندوز از طریق ابزارهای خط فرمان دریافت و داخل متغیر cpu ذخیره میکند:
string command;
int cpu = 1;
FILE *fp;
char res[4];
#ifdef __linux__
command = "grep -c ^processor /proc/cpuinfo";
#elif _WIN32
command = "echo %number_of_processors%";
#endif
if(fp = popen(command.c_str(), "r")) {
fgets(res, sizeof(res) - 1, fp);
cpu = atoi(res);
}
pclose(fp);