الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طلب مساعده في تصحيح وفهم بعض الأخطاء في كود يستخدم دالة Openوwrite

بدأه FunnyWolF في 23 أكتوبر 2008 · 4 رد · 586 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اخواني انا كتبت برنامج يقوم بانشاء معالجين:

الأول:يستخدم دالة open لانشاء ملف جديد

والثاني:يستخدم دالة write لكتابة رقم المعالج

والأب المفروض ينتظر عياله حتى يخلصون :P الدوام

لكن فيه بعض الأخطاء, ياريت المساعده و شرح بعض الاشياء كمان

وهذا الكود

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#define BUFFSIZE 1024
main ()
{
pid_t child1;
if ((child1= fork()) == 0)
{
while(((child1=wait(&status)) == -1) && (errno == EINTR));  /* I want each child to wait untill the other finish his job */
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;
open( "abc", O_WRONLY | O_CREAT | O_TRUNC, mode);  /* I want creat a file call abc in the home directory using 'open' system call, but I'm not sure about the bath if its wright or wrong */
}
else
{
wait(); /* I want to make the father wait until the first child finish his job*/
pid_t child2;
if ((child2= fork()) == 0)
{
int A;
A = (long)getpid();   /*I'll save the pid for this process to A*/
write(STDOUT_FILENO, &A, 10);	/*I tried to print the pid to the screen using the 'write' system call*/
}
else
{
}
}

وتحياتي للجميع

تم تعديل هذه المشاركة بواسطة FunnyWolF في 23 أكتوبر 2008 في 13:45

#2

اي كمبايلر تستخدم وماهو نظام تشغيلك؟.

tvquran_6.gif

#3

انا اشتغل على LINIX

واسوي كومبلاير من نفس الترمينال

#4

يا شباب ... الله يرحم والديكم افيدوني اذا تعرفون ولو بشي بسيط

انا احس انو التنظيم او ال structure فيه غلط او شي , لانو خبرتي ضعيفه في استعمال الدوال open وwrite و wait

والله يعطيكم العافيه

#5

ياشباب انا عملت بعض التعديلات لكن الاخطاء خفت بكثير

وهذا الكود

#include <stdio.h>

#include <sys/types.h>

#include <sys/wait.h>

#include <sys/stat.h>

#include <unistd.h>

#include <fcntl.h>

#include <errno.h>

#define BUFFSIZE 1024


main ()

{

 pid_t child1;

 if ((child1= fork()) == 0)

  {

   int status;

   while(((child1=wait(&status)) == -1) && (errno == EINTR));

   mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;

   open( "abc", O_WRONLY | O_CREAT | O_TRUNC, mode);

  }

 else

  {

   pid_t child2;

   if ((child2= fork()) == 0)

	{

	 int A;

	 A = (long)getpid();

	 write(STDOUT_FILENO, &A, 10);

	}

   else

	{

	}

}

لكن فيه خطأ في السطر الاخير موفاهمه

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…