when read buffer size is 2048, it work , but buffer size is 48 or other number, write call will be blocked, why?
0
votes
2
answers
383
views
#include
#include
#include
#include
#include
#include
int main(int argc, char* argv[]){
if(argc < 2){
puts("err argv");
return -1;
}
int r_fd = open(argv, O_RDWR);
int w_fd = open(argv, O_RDWR);
fd_set r_set;
fd_set w_set;
char w_buf;
char r_buf;
int read_count = 0,write_count = 0;
while(1){
FD_ZERO(&r_set);
FD_ZERO(&w_set);
FD_SET(r_fd, &r_set);
FD_SET(w_fd, &w_set);
int ret = select(w_fd + 1, &r_set, &w_set, NULL, NULL);
if(FD_ISSET(r_fd, &r_set)){
read(r_fd, r_buf, sizeof(r_buf));
printf("read count:%d\n", read_count++);
}
if(FD_ISSET(w_fd, &w_set)){
write(w_fd, w_buf, sizeof(w_buf));
printf("write count:%d\n", write_count++);
}
//sleep(1);
}
return 0;
}
execute code:mkfifo 1.fifo && gcc main.c -o main && ./main 1.fifo
Asked by zhenfei ren
(1 rep)
Feb 9, 2023, 03:52 AM
Last activity: Feb 10, 2023, 12:34 AM
Last activity: Feb 10, 2023, 12:34 AM