読み取り専用 FIFO から数行を読み取るときに問題が発生しました。具体的には、number 、 a 、および stringn
が続く2 行を読み取る必要があり、C プログラムは書き込み専用 FIFO に数回書き込む必要があります。これが私の試みです。\n
str
str
n
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
char *readline(int fd);
int main(int argc, char** argv) {
int in = open(argv[1], O_RDONLY);
mkfifo(argv[2], 0666);
int out = open(argv[2] ,O_WRONLY);
char *line = (char *) malloc(50);
int n;
while (1) {
sscanf(readline(in), "%d", &n);
strcpy(line, readline(in));
int i;
for (i = 0; i < n; i++) {
write(out, line, strlen(line));
write(out, "\n", 1);
}
}
close(in);
close(out);
return 0;
}
char *readline(int fd) {
char *c = (char *) malloc(1);
char line[50];
while (read(fd, c, 1) != 0) {
if (strcmp(c, "\n") == 0) {
break;
}
strcat(line, c);
}
return line;
}
コードは正常に動作していますが、最後の文字列の繰り返しの後に乱数の改行が挿入されています。また、この数は実行ごとに変わります。
誰か助けてくれませんか?