c读取文件达到scanf的等待效果
我想要让c程序一直读取文件的内容,如果有数据就读取,如果没数据就等待,达到scanf类似的效果,我知道能够用while循环一直判断来实现但是这样太耗cpu了,问下有没更好的解决方法。其实我想要实现的功能是两个c程序中的通讯,想socket,内存共享这些想着小题大做了,我只需要在本地实现两个c程序互相传输数据就行了,如果哪个大佬能够这样从根本帮我解决,我会非常感谢的。 可以试试 命名管道#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
// 父进程负责从标准输入读取数据,然后写到fifo
// 子进程负责从fifo读取数据,然后写到标准输出
int main(int argc, char *argv[]) {
if(argc != 2) return -1;
int fd;
if(!strcmp(argv, "a")) {
fd = open("fifo_0", O_RDONLY);
fd = open("fifo_1", O_WRONLY);
} else if(!strcmp(argv, "b")) {
fd = open("fifo_0", O_WRONLY);
fd = open("fifo_1", O_RDONLY);
} else return -1;
if(!fork()) {
while(1) {
char buff;
ssize_t nbyte = read(fd, buff, 1024);
write(1, buff, nbyte);
if(nbyte == 0 || !strncmp(buff, "exit", 4)) {
close(fd); close(fd); exit(0);
}
}
}
while(1) {
char buff;
ssize_t nbyte = read(0, buff, 1024);
write(fd, buff, nbyte);
if(nbyte == 0 || !strncmp(buff, "exit", 4)) {
close(fd); close(fd); exit(0);
}
}
return 0;
}
页:
[1]