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

استقبال القيمة المرسلة

مغلق
بدأه Desigen في 13 مايو 2005 · 9 رد · 694 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

يعطيكم العافية

شلون الصحة

بدي أعرف كيف ممكن أقوم بإستدعاء برنامج مكتوب بالسي ++

من برنامج أخر مكتوب بالسي ++

البرنامج المستدعى يرجع قيمة 0 في حالة التنفيذ الصحيح

و يرجع 1 في حال عدم توفر الذاكرة

كيف بدي أعمل هذا الشيئ

يعني

استدعاء برنامج من خلال برنامج

و استدعاء برنامج من خلال ملف batch

شكرا لكم

#2

باستخدام الFunction الشهيرة exit و التي تعطيها 1 او 0 و التي تقوم بدورها باعادة هذه القيمة للThread التي قامت بتشغيل البرنامج

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#3

السلام عليكم

ممكن تستخدم ال function _spawnl اعطيك مثال:

نفرض انا كتبنا برنامج بالسي نسميه temp وليكن:

#include <stdio.h>
#include <windows.h>
#include <process.h>

void main()
{
	printf("temp file is running ....\n");
	Sleep(5000);
	printf("temp file finished!!!!\n");

	exit(_getpid());
}

ونريد ان نستدعيه من برنامج اخر .

فما عليك الا ان تكتب في البرنامج المستدعي هدا الكود:

#include <stdio.h>
#include <windows.h>
#include <process.h>

void main()
{
	int  pid, i, j, termstat, _pid;
	_flushall();
	pid =_spawnl( _P_NOWAIT, "temp.exe",  "temp.exe", NULL );
	if(pid == -1)
  printf("   File not found in this directory ");
	else
	{
  _pid = GetProcessId((HANDLE)pid);
  _cwait( &termstat, pid, _WAIT_CHILD );
        printf("\n<%d> temp.exe [DONE] ", _pid);
	}
}

يجب ان يكون البرنامج temp موجود في نفس الdirectory debug

اتمني ان يفي بالمطلوب

مع تحياتي

#4

ممكن ايضا استخدام ال fork فهي تقوم بنفس العملية تقريبا و قد استخدمتها على Linux من قبل و كانت ممتازة

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#5

هجرب و رد لكم خبر

شكرا كثيرا لكم

#6

أعتقد أن دالة fork

تتعلق بعملية توليد child process

وهيا تقوم بتلويد نفسالكود للبرنامج تقريبا أو كود مشابه

وأنا أيضا جربتها على اللينكس ولكن هل توجد هذه الدالة في مكتبيات ال c++ خارج اللينكس

#7

ال fork جزء من ال Standard C

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#8

لم أنجح في استدعاء برنامج أخر من برنامجي

هل يوجد في السي أمر تصدير للمتحولات مثل لنكس

export var1 , var2

شكرا لكم

#9

السلام عليكم

أولا اتمنى انك تكون جربت الكود اللي كتبتو في المشاركة السابقة ولا تقول انو لا يعمل لاني مجربو قبل ما ارسلو

المهم هي نفس الدالة بامكانك ارسال متحولات على حسب طلبك

int param1;
char param2;
_spawnl( _P_NOWAIT, "temp.exe",  "temp.exe",param1,param2, NULL );

وهككذا البرنامج الاول temp بامكانه قراءة المتغيرات المرسلة اليه

انا جربت الكود على ال visual studio.net

وبامكانك الاستعانة بال msdn مجرد اكتب _spawnl

اما بالنسبة للدالة fork فهي تعمل مع اليونكس واللينكس ولا تستطيع من خلالها استدعاء برنامج اخر

كل ما اعرفه عنها انها تستدعي child process وبامكانك كتلبة كود خاص به ولكن كل هذا ينفذ في نفس البرنامج الاب

ويمكن اكون غلطان .....

اذا اردت التوضيح اكثر فانا على استعداد

مع تحياتي

#10

يسلموا دياتك

في مجال أعرف شو البرمترات يلي بتاخذها الإجراء يلي كتبته

بعدين عم تعرف متحول _P_NOWAIT شو عمله

شكرا لك

هذا الموضوع مغلق.

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