تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 7 از 7

نام تاپيک: راهنمایی در مورد یک کد Perl

  1. #1
    در آغاز فعالیت
    تاريخ عضويت
    Aug 2007
    پست ها
    6

    پيش فرض راهنمایی در مورد یک کد Perl

    با سلام،
    من سعی دارم کدی بنویسم که برنامه خاصی را در Dos اجرا کنه (یا همون CMD در ویندوز). ولی با توجه به این که اون برنامه گاهی اوقات هنگ می کنه، کد من لازمه که Timeout داشته باشه و بعد از فرا رسیدن Timeout برنامه ی Dos را kill کنه. پس از جستجو در سایت های انگلیسی، توانستم این کد رو برای قابلیت Timeout سرهم کنم که کار هم می کنه ولی این کد هنوز برنامه Dos رو kill نمی کنه:


    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    با جستجوی بیشتر متوجه شدم که باید از قابلیت fork استفاده کنم تا همزمان با اجرای برنامه Dos، بتونم PID برنامه اجرا شده رو ذخیره کنم و بعد با استفاده از این PID، برنامه DOS رو kill کنم. برای پیدا کردن PID برنامه اجرا شده این قطعه کد رو پیدا کردم:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    ولی نمی دونم چه طور باید این قطعه کد رو در کد اصلی قرار بدهم. چون کپی پیست تنها جواب نداد:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    من اصلا آشنایی با Perl ندارم و به دلیل کمبود وقت، نمی تونم این زبان رو یاد بگیرم، استفاده ای هم برای من نداره. من کل برنامه نویسی ای که انجام داده ام با Matlab هست و فقط همین یک کدی را که توضیح دادم از Perl لازم دارم. (چون قابلیت Timeout و kill در Matlab نیست). پس اگر لطف کنید کد من رو ویرایش کنید و کد نهایی رو به من بدهید بسیار ممنون خواهم شد.
    Last edited by 3jokes; 06-12-2014 at 11:43.

  2. #2
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2013
    پست ها
    160

    پيش فرض

    سلام
    باین این دستور در متلب میشه PID مثا برنامه notepad را بدست آورد
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    دستور pause هم به تعداد ثانیه مورد نیاز برنامه را متوقف می کنه
    دستور زیر هم مثلا یک برنامه با pid برابر 1234 را می بنده
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  3. #3
    در آغاز فعالیت
    تاريخ عضويت
    Aug 2007
    پست ها
    6

    پيش فرض

    ضمن تشکر از پاسخ شما، Pause کارایی Timeout (در پرل) رو برای من نداره.
    Pause حتما مثلا 10 ثانیه صبر می کنه بعد برنامه رو می بنده.
    Timeout اگر برنامه مثلا بعد از 1 ثانیه خودش بسته شد، دیگه 9 ثانیه بعدی رو صبر نمی کنه و بلافاصله ادامه کد رو اجرا می کنه.

    کدی که من نوشته ام کار Optimization انجام می ده. به این صورت که مثلا 10هزار مرتبه اون برنامه تحت Dos رو (هر بار با متغیرهای متفاوت) اجرا می کنه تا ببینه کدوم دسته از متغیرها بهترین نتیجه رو دارند. کد تحت داس من هم در حالت عادی در 1 ثانیه جواب می ده و خود به خود بسته می شه. ولی "گاهی اوقات" هنگ می کنه.

    این جا تفاوت قابلیت Pause با Timeout مشخص می شه. با Pause برنامه Matlab برای هر بار اجرای کد داس حتما 10 ثانیه صبر می کنه (10هزار ضربدر 10 ثانیه می شه 28 ساعت) ولی با Timeout، هر بار اجرای کد معمولا 1 ثانیه طول می کشه و فقط گاهی اوقات برنامه هنگ می کنه و باید 10 ثانیه صبر کنیم (مثلا 9900 ضرب در 1 ثانیه به علاوه 100 ضرب در 10ثانیه می شه 3 ساعت).

  4. #4
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2013
    پست ها
    160

    پيش فرض

    این برنامه ای که در cmd اجرا می شه آیا خروجی هم در cmd چاپ می کنه؟

  5. #5
    در آغاز فعالیت
    تاريخ عضويت
    Aug 2007
    پست ها
    6

    پيش فرض

    خروجی برنامه یه فایل txt هست که بعد متلب اون فایل رو باز می کنه و محتواش رو می خونه و ادامه کد...

  6. #6
    داره خودمونی میشه
    تاريخ عضويت
    Sep 2013
    پست ها
    160

    پيش فرض

    برنامه زیر به زبان سی هست که همین کار را برای شما انجام میده کافیه اون را کامپایل کنید و در همون فولدری بذارید که اون فایل exe دیگه قرار داره
    مثلا اگه بخواهید timeout برابر 5 ثانیه باشه ، در متلب هم این دستور را بزنید
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که myprog.exe همون فایل شما هست که در cmd اجرا میشه و parameters هم پارامترهایی هست که احتمالا به اون برنامه ارسال می کنید
    اگه نتونستید برنامه را کامپایل کنید نمونه فایل اجرایی هم خودم کامپپایل کردم و ضمیمه کردم:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Last edited by rahnema1; 08-12-2014 at 13:57.

  7. این کاربر از rahnema1 بخاطر این مطلب مفید تشکر کرده است


  8. #7
    در آغاز فعالیت
    تاريخ عضويت
    Aug 2007
    پست ها
    6

    پيش فرض

    بسیار بسیار مرسی!
    کار می کنه.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

برچسب های این موضوع

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •