PDA

View Full Version : چگونه آرگومان‌ها رو مکرراً با استفاده از execl به child بفرستم؟



bababarghi
شنبه 18 مهر 1394, 01:30 صبح
دوستان عزیز و منخصصین برنامه‌نویسی، من برنامه ای دارم که دو تا string رو به هم می چسبونه رو به child می فرسته. child هم این رشته رو دریافت می کنه و روی کنسول نشون می ده. مشکلی که من دارم اینه که برنامه parent ام لازمه در ثانیه ۲ بار این اطلاعات رو به child برای نمایش بفرسته. هر کاری می کنم نمی تونم از ساختار حلقه در برنامه ام استفاده کنم تا مکرراً این مقادیر رو به child بفرستم.

ممنون می شم از دوستان اگه کسی کمکم کنه. اسم پروسس child‌ هست ProcessNo3_TEST


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define READ 0
#define WRITE 1


int FIFO[2];
char fileDescriptor[10];


char* stringMaker( char *s1,char *s2 );


int main()
{
char lengthInChar[15],msg[200];
int msgLength,i;
char *stateName, *timer;
if (pipe(FIFO) == -1)
{
printf("cannot create pipe\n");
exit(1);
}
sprintf(fileDescriptor, "%d", FIFO[READ]);

stateName = "UP2"; // for instance
timer = "98"; // for instance

msgLength = strlen(stateName) + strlen(timer) +3;
strcpy(msg, stringMaker(stateName, timer) );
write(FIFO[WRITE], msg, msgLength);

switch (fork())
{
case 0:
sprintf(lengthInChar, "%d", msgLength);
execl("ProcessNo3_TEST", "ProcessNo3_TEST", lengthInChar, fileDescriptor, NULL);
exit(1);
case -1:
perror("fork() failed-->");
exit(2);
default:
break;
}
sleep(10);
exit(0);
}


char* stringMaker( char *s1,char *s2 )
{
char *s3;
strcpy(s3,s1);
strcat(s3,"-");
strcat(s3,s2);
strcat(s3,"-");
strcat(s3,"\0");
return s3;
}





برنامه بالا برای ارسال یکبار، صحیح عمل می کنه. به عنوان مثال در کد بالا دو مقدار UP2 و 98 به child فرستاده شده اند که می بینید به طور صحیح دریافت شده اند و نشون داده میشن:


135892

اما همونطور که گفتم نیاز دارم این کار به صورت مکرر انجام بشه.

bababarghi
یک شنبه 19 مهر 1394, 05:45 صبح
از دوستان عزیز کسی می تونه کمک کنه؟ :افسرده: