תקשורת בין תהליכים...

MotiAd

New member
תקשורת בין תהליכים...

היי חברה. רציתי לשאול לעצתכם בעניין. יש לי תוכנה שאני עובד עליה והיא בנויה כך: יש תהליך אחד שמבצע בדיקות מסויימות לגבי קיום של צינורות ואירועים במערכת ואח"כ טוען שתי פרוססים שצריכים לתקשר ביניהם דרך צינורות. כל מה שהתהליך הראשון מבצע זה להריץ את הפקודה CreateNamedPipe לשתי צינורות וכך אחד משתי התהליכים האחרים מריץ גם כן את הפקודות האלו כדי לקבל ידיות לצינורות האלו. האם בכך מספיק כדי להשתמש ב-ReadFile ו-WriteFile על מנת להעביר מידע דרכם? כי יש לי ת'רדים בכל אחד משני הפרוססים האחרים שאחראים על שליחה וקבלה של מידע, כל אחד מהם עושה ReadFile או WriteFile לפי תפקידו אבל שום מידע משום מה לא עובר. יש לכם מושג מה אני שכחתי או צריך להוסיף? כי כמו שאמרתי: כל פרוסס מבצע את הפקודה CreateNamedProcess ולאח"כ כל ת'רד בתוכו מבצע את ReadFile או WriteFile בלי שום פקודה שנוגעת לצינורות פרט אליהן. שלכם, מוטי.
 

gilad_no

New member
הרשאות?

קריאה לפונקציה על אותו PIPE עם WRITE_OWNER לא מחזירה ידית לPIPE הפתוח אלא נכשלת. דרך יותר טובה יכולה להיות ליצור אותם בPROCESS הראשון, ואז פשוט להעביר את הידיות ל2 הפרוססים שהוא מריץ (ע"י bInheritHandles בפונקציה CREATEPROCESS).
 

MotiAd

New member
העניין הוא שהפונקציה...

לא נכשלת. ואני גם הגדרתי שתהליכים בנים ירשו את הידיות. מה שאני עושה בתהליכים בנים זה בבנאי קריאה לפונקציה CreateNamedPipe שהבנתי שצריכה להחזיר ידית לצינור במידה והוא פתוח (והוא פתוח) או לא. והדבר הבא שאני עושה בת'רדים אח"כ זה שימוש ב-ReadFile או WriteFile ולפני כן שום פעולה נוספת שקשורה לצינורות.
 
למעלה