나는 FIFO에 쓰는 bash 스크립트를 가지고 있습니다. 그리고 동일한 FIFO에서 읽는 C 프로그램이 있습니다.fifo와 c 프로그램에서 스크립트 bash가 쓰여집니다.
나는 다른 스크립트로 FIFO에서 읽으려고했기 때문에 스크립트가 작동한다고 확신한다. 그러나 C 프로그램에서는 무언가가 작동하지 않습니다. 스크립트를 실행할 때 C 프로그램을 실행하면 서로 기다리고있는 것처럼 보입니다. 여기에 코드가 있습니다. 어디에서 잘못 가고
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#define MAX_BUF 1024
int main(int argc, char *argv[])
{
int fd, i;
char * myfifo = argv[1];
char buf[MAX_BUF];
fd = open(myfifo, O_RDONLY);
while (1) {
if(read(fd, buf, MAX_BUF) > 0)
{
printf("Received: %s\n", buf);
}
}
close(fd);
return 0;
}
:
#!/bin/bash
fifo_name="myfifo";
# Se non esiste, crea la fifo;
[ -p $fifo_name ] || mkfifo $fifo_name;
echo "3" > $fifo_name;
echo "6" > $fifo_name;
그리고 여기에 C 프로그램 (독자) :
스크립트는 (작가)인가?
감사합니다.
'open()'호출이 작동하고 절벽으로 행진한다고 가정하기 전에 호출 결과를 확인하지 않는 경우. 'while' 루프를 벗어나는 메커니즘이 없으면 보너스가 될 것입니다. – WhozCraig