パイプ接続を使用して2つの子プロセスを作成しました。
プロセスAのコード:
char *buf;
size_t size;
buf = "some string";
size = strlen(buf);
printf("size in process A:%zu\n", size);
write(pfds[3][1], &size, sizeof (size_t));
write(pfds[3][1], buf, sizeof (buf));
buf="other string";
size = strlen(buf);
printf("size in process A:%zu\n", size);
write(pfds[3][1], &size, sizeof (size_t));
write(pfds[3][1], buf, sizeof (buf));
プロセスBのコード:
size_t size;
/*read in size from Process A*/
read(pfds[3][0], &size, sizeof (size_t));
printf("READ size in process B: %zu\n", size);
/*allocate memory space for the line*/
char *buf = malloc(size);
/*read in line from process A*/
read(pfds[3][0], buf, size);
printf("READ buf in process B: %s.\n", buf);
/*read in size from readProcess*/
read(pfds[3][0], &size, sizeof (size_t));
printf("READ size in process B:%zu\n", size);
/*free the allocated memory*/
free(buf);
出力は次のようになります。
size in process A:11
size in process A:12
READ size in process B: 11
READ buf in process B: some
.
READ size in process B:101
サイズを使用してwhileループを制御し、サイズが0になるまでAからBに行を継続的に送信したいのですが、何が間違っているのでしょうか。サイズは、最初に送信されたときは正しいですが、2回目は正しくありません。