我正在编写 C 程序,它不断生成两个名为stateName
and的字符串值timer
(以每秒五次的速率)。我需要将它们连接起来并将它们传递给另一个名为的进程ProcessNo3_TEST
,该进程负责标记并显示它们。
问题是我不知道如何通过execl
. 我进行了几次尝试,但都没有成功。这是我的代码,它适用于一对值(例如UP2
和98
):
#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;
}
有人可以帮忙吗?
(顺便说一下,我在 Windows 上运行 CygWin)
- - - - - 更新 - - - - - - -
正如下面评论中所建议的,我找到了一个很好的例子fdopen()
来解决我的问题。(链接)