PDA

نسخه کامل مشاهده نسخه کامل : قطعه كد زير چه خروجي را توليد ميكند؟



saeedeh1363
02-09-2007, 08:45
سلام.

دوستاي خوبم يه سوال داشتم اونم اينكه قطعه كد زير كه در رابطه با سيگنال هندلر هستش رو اگر در محيط eclipse لينوكس تايپ كنم دقيقا چه خروجي اي رو دريافت خواهم كرد.من بدليل مشكلاتي نتونستم لينوكس رو زوي سيستمم نصب كنم و نتيجه كد زير رو عملا مشاهده كنم.اگه بتونيد كمكم كنيد خيلي لطف كرديد.:20:


#include <signal.h>
#include <string.h>
#include <sys/types.h>
#include <sys/wait.h>
sig_atomic_t child_exit_status;
void clean_up_child_process (int signal_number)
{
/* Clean up the child process. */
int status;
wait (&status);
/* Store its exit status in a global variable. */
child_exit_status = status;
}
int main ()
{
/* Handle SIGCHLD by calling clean_up_child_process. */
struct sigaction sigchld_action;
memset (&sigchld_action, 0, sizeof (sigchld_action));
sigchld_action.sa_handler = &clean_up_child_process;
sigaction (SIGCHLD, &sigchld_action, NULL);
/* Now do things, including forking a child process. */
/* ... */
return 0;
}
Note how the signal handler stores the child process’s exit status in a global variable,
from which the main program can access it. Because the variable is assigned in a signal
handler, its type is sig_atomic_t.

taia
02-09-2007, 10:13
دوست من همونطور که از متن خود برنامه هم مشخص هست خروجی خاصی نداره این برنامه!
این برنامه صرفا برای چند صدم ثانیه اجرا می شه و بعد هم هیچ خروجی خاصی نداره،‌ شما مطمئنی کد برنامه رو درست گذاشتی،‌ناقص هست

saeedeh1363
03-09-2007, 06:32
سلام.
من سعيده هستم هموني كه يه سوالي در رابطه با خروجي يه كد توو لينوكس ازتون پرسيده بود.ميتونيد يه لطفي كنيد و برام توضيح بديد مختصرا وظيفه اين كد چي هست يعني كلا سيگنال هندلر كه توو اين كد اومده چه نقشي رو ايفا ميكنه؟
يه سوال ديگه هم داشتم چطور و از كجا ميتونم سي دي هاي live لينوكس رو تهيه كنم؟

خيلي خيلي لطف ميكنيد اگه به سوالاتم جواب بديد .
بازم ممنون.

taia
03-09-2007, 15:40
سلام.
من سعيده هستم هموني كه يه سوالي در رابطه با خروجي يه كد توو لينوكس ازتون پرسيده بود.ميتونيد يه لطفي كنيد و برام توضيح بديد مختصرا وظيفه اين كد چي هست يعني كلا سيگنال هندلر كه توو اين كد اومده چه نقشي رو ايفا ميكنه؟
يه سوال ديگه هم داشتم چطور و از كجا ميتونم سي دي هاي live لينوكس رو تهيه كنم؟
بازم ممنون.

سیگنال هندلر وظیفه اش دریافت سیگنال و انجام یک کار است که عموما سه حالت بیشتر بیشتر نداره یا یک کار خاص انجام می ده یا سگنال رو کاملا رد می کنه(نادیده می گیره) یا که سیگنال رو به صرفا دریافت میکنه برای اطلاع. :46:

اگر می خواهید دانلود کنید که خوب از سایت های رسمی هر توزیع می تونید بگیرید برای خرید ولی من نظری ندارم :31:

saeedeh1363
03-09-2007, 19:47
بازم سلام.
از استادمون در رابطه با برنامه بالا پرسيدم ميگه بايد يه خروجي بده و اونهم return Child هستش منتها بايد يه چيزايي رو به برنامه اضافه كنيد چون اگه اين قطعه كد رو همينطوري بريد و توو محيط اديت اجرا كنيد ارور هاي فراواني ميگيره ازتون.نظر شما در اين رابطه چيه؟

----------------------------------------------------------------------------------------------------------------------------------
آموختن علم افتخاري است كه خدا نصيب انسان هاي جاهل نميكند.گامي بايد تا شروعي باشد...

taia
04-09-2007, 09:36
بازم سلام.
از استادمون در رابطه با برنامه بالا پرسيدم ميگه بايد يه خروجي بده و اونهم return Child هستش منتها بايد يه چيزايي رو به برنامه اضافه كنيد چون اگه اين قطعه كد رو همينطوري بريد و توو محيط اديت اجرا كنيد ارور هاي فراواني ميگيره ازتون.نظر شما در اين رابطه چيه؟


سلام...
در مورد ارور در لینوکس که هیچ اروری نداد و برنامه سالم اجرا شد ولی همونطور که گفتم برنامه باید با ۳ راه با سیگنال برخورد کنه شما باید پروسه ی مورد نظر خودتون رو در Now do things, including forking a child process اینجا اضافه کنید اگر مایل بودید من یک نمونه از این برنامه ها رو براتون می گذارم البته باید بهم وقت بدید تا براتون پیداکنم دیروز در یکی از لب های دانشگاه پرسیدم گفتند این برنامه ها رو دارند ولی وقت می بره تا به من بدند.

Bayazee
04-09-2007, 14:17
سلام
اين قطعه كد بخشي از يك برنامه بزرگتر هست ! در حقيقت مثالي هست براي نحوه كار با پروسعه هاي فرزند. شما مي تونيد به اين ترتيب برنامه هايي چند نخي رو با استفاده از روشهاي مختلفي چون fork و ... بنويسيد . اين بخش هم نحوه هندل اونهارو توضيح مي ده . برنامه ابتدا منتظر مي شه پروسس فرزند اجرا و تموم شه و مقدار برگشتي اونو بدست مي ياره . بخش هاي اصلي برنامه ناقص هست ! يعني اگر اينو كامپايل كنيد كدي اجرا نمي شه ! چون بخش اصلي كه ايجاد يك پروسس و فراخواني اون هست نوشته نشده .

saeedeh1363
04-09-2007, 22:42
سلام
ممنون ميشم اگه ميتونيد برنامه رو برام گير بياريد.البته اگه تونستيد و زحمتي نبود بازم ممنون.

Bayazee
05-09-2007, 01:52
برنامه رو ؟ كدوم برنامه ؟ اينو يه بابايي به عنوان توضيح نحوه نوشتن برنامه هاي اينجوري نوشته ! ادامشو بايد خودتون بنويسيد ! يعني گفته قالب كليش يه چيزي شبيه به اين هست ! شما دقيقا چي مي خواييد ؟ اگر دنبال پروژه دانشجويي يا ... هستيد فكر مي كنم خودتون دست بكار بشيد بهتره . وگر نه دقيقا دنبال چي هستيد ؟