نقل قول: تو پست اولت نقل و قول کردی که پسورد بلافاصه نمایش داده میشه (ترسیدم) بعد تو پست دوم این همه توضیح دادی !! :))))))) حالت خوبه ؟!
آخه کل کاری که کردم این بود
نوکرم! تو خوبی؟
نقل قول: یعنی چی؟ ctrl + z منظور چیه ؟
هر برنامه ای که اجرا میشه میتونید بهش سیگنالهای خاصی رو بفرستید که کارهای متفاوتی انجام میدن!
یا میتونید دستی این رو به برنامه بفرستید؛ مثلا ctrl +c ؛ SIGINT میفرسته به برنامه ...
یا اینکه توسط برنامه های دیگه یه سیگنال بهشون ارسال کنید!
مثلا کاری که kill توی لیتوکس میکنه اینه که شماره pid رو میگیره و سیگنالی که بهش فرمان دادی رو به برنامه میفرسته!
کد php:
#include <stdio.h>
#include <unistd.h>
int main(){
while(1){
sleep(5);
printf("1\n");
}
return 0;
}
این برنامه رو کامپایل کن و اجرا کن؛
اول ctrl +c بزن ؛ میبینی که برنامه کارش به اتمام میرسه
دوباره اجراش کن و حالا اینبار ctrl + z بزن!
------
معادل دستورات بالا اینظوری میشه
دستور اول به برامه سیگنال خاتمه میده! (که هرچند برنام میتوه سیگنال رو هندل کنه و بسته نشه و ..)
دستور دوم سیگنال stop میده
-------------------
-------------------
نقل قول: فرایند والد که زامبی نیست و atexit هم داخل فرآیند والد اجرا میشه. یا اینکه اگه والد قبل از فراخوانی wait فرزندش کیل بشه زامبی میشه ؟ درست گفتم؟
ااا من میگم یه چیزی این وسط جور در نمیاد
دو نکته باید بگم؛
نکته اول اینکه من به اشتباه فکر میکردم atexit توی فرزند داره اجرا میشه!!
پس این جمله ام غلطه:
نقل قول: بعد از اینکار انگار سیستم فهمید پروسه زامبی تولید شده؛ اون بع فرزندخوندگی init1 در اورد و اونم زدش پوکوندش
جمله صحیح این میشه:
بعد از اینکه fg رو اجرا کردم (با توجه به توصیحات بالا) برنامه به روال اجرای خودش برگشت؛ شبیه این میشه کد کد شما اینطوری تغییر پیدا کنه:
کد php:
res_child_pid = getpid();
// kill(parent_pid, SIGSTOP);
printf("\e[1;1H\e[2J");
نکته دوم اینه پروسه زامبی پروسه ی فرزندی هست که اجراش تموم شده! یعنی کار واسه انجام دادن نداره؛ ولی والدش در حال اجراست و سیگنالی که از فرزند اومده رو هندل نکرده؛
اگه والد kill بشه کل بچه هاش هم کیل میشن دیگه؛
کد php:
$|++;
$p=fork();
if($p>0){
print "i'am parent\n";
sleep(30);
}else{
sleep(2);
exit(0);
}
اینو با perl اجرا کن؛ و بعدش لیست پروسه هات رو ببین؛
فرزند کارش بعدش ۲ ثاینه تموم میشه؛
ولی چون والدش داره به یه کار دیگه میرسه و توجه نمیکنه که فرزندش کارش تموم شده؛ فرزند میشه زامبی!
ولی بعد از ۳۰ ثانیه که والد هم کارش تموم شد؛ هم خودش و هم فرزنداش کارشون تموم میشه
----------
روی حرفای منم حساب باز نکن به هیچ وجه
من واسه خودم یه چیزی میگم واسه خودم