ورود

View Full Version : سوال: ادامه دادن روند برنامه بدون انتظار برای یک تابع



mafia1990
یک شنبه 07 آبان 1391, 20:49 عصر
سلام به اساتید
خواستم بدونم در پرل راهی داره تا برنامه ما بدون منتظر موندن تابعی به کار خودش ادامه بده؟
مثلا فرض کنید من می خوام با تابع system یک برنامه رو به این شکل اجرا کنم


system("program name") ;


ولی وقتی اجرا میکنم برنامه تا تموم شدن برنامه بعدی و گرفتن مقدار برگشتی منتظر می مونه در صورتی که من میخوام به کارش ادامه بده و درست اجرا شدن یا نشدن برنامه به این ربطی نداشته باشه
ممنون میشم کمک کنید

eshpilen
سه شنبه 09 آبان 1391, 07:57 صبح
بنظرم هردوی ویندوز و لینوکس امکان اجرای مستقل برنامه خط فرمان رو میدن. یعنی بقول شما صبر نکنه.
در لینوکس که آخر خط فرمان اگر علامت & رو اضافه کنید حله.
برای ویندوز هم فکر کنم یه چیزی داشت که یادم نیست متاسفانه :لبخند:

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

راستی باید حواست باشه ببینی با این روشها اگر خود برنامهء اصلی بسته بشه مشکلی در اجرای فرمانهایی که هنوز دارن کار میکنن پیش نیاد. برنامه نویسی خیلی ظرایف داره!

MSK
پنج شنبه 16 آذر 1391, 14:18 عصر
سلام؛
اگه می خواید یه برنامه رو اجرا کنید و نتیجه اجراش رو بخونید این مثال از مرجع پرل:


open(STATUS, "netstat -an 2>&1 |")
|| die "can't fork: $!";
while (<STATUS>) {
next if /^(tcp|udp)/;
print;
}
close STATUS || die "bad netstat: $! $?";



اگه بطور کلی می خواید یه قسمت از برنامه رو از پروسس اصلی جدا کنید و مستقل اجرا کنید این مثالشه:


my $pid = fork();
die "cannot fork" unless defined $pid;
if ($pid == 0) {
# parent process
exit 0;
} else {
# chield process
system($command);
# ...
}