الگوریتمستان - تابع popen در زبان ++C

روش اجرای برنامه‌ای دیگر داخل کد ++C و استفاده از خروجی آن

✤    ۱۲ شهریور ۱۳۹۵

گاهی لازم است یک برنامه خارجی را از برنامه خودمان اجرا و خروجی آن را استفاده کنیم. این برنامه می‌تواند یک برنامه اجرایی دیگر یا یکی از ابزارهای سیستم عامل مانند 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);

  


نسخه‌ی اولیه‌ی این نوشته از وبلاگ تجربه‌های پراکنده یک مسعود به الگوریتمستان منتقل شده است.

تا کنون ۲ امتیاز ثبت شده
نوشته لایک نداشت؟
 
به اشتراک گذاری نوشته

amasoudfam.ir/l/xtmto

اشتراک‌گذاری در LinkedIn     اشتراک‌گذاری در Twitter     ارسال با Telegram

نام: *  
پست الکترونیک (محرمانه):
پیام: *  
• طیبه
۱۶ شهریور ۱۴۰۳، ساعت ۱۴:۰۷

ممنون از توضیحات