我一直在试图从命名管道读取连续的数据。 但由于某些原因,如果我不把延迟,接收器将只是停止阅读,只有黑屏几样后显示。
我需要发送有可能以毫秒为单位改变连续的数据,所以这就是为什么把延迟是行不通的。 我想先用一个while循环(真正的脚本将被读取的财务数据)来模拟它。 这是我第一次尝试:
这是发送者,Python脚本:
import os
import time
try:
os.remove("/tmp/pipe7") # delete
except:
print "Pipe already exists"
os.mkfifo("/tmp/pipe7") # Create pipe
x = 0
while True:
x = time.time()
pipe = open("/tmp/pipe7", "w")
line = str(x) + "\r\n\0"
pipe.write(line)
pipe.close()
#time.sleep(1)
os.remove("/tmp/pipe7") # delete
这是在C / C ++的接收机:
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <iostream>
#include <sys/stat.h>
#define MAX_BUF 1024
using namespace std;
int main()
{
while(1){
char buf[MAX_BUF];
memset (buf, 0, sizeof(buf)); //Clearing the message buffer
int fd = open("/tmp/pipe7", O_RDONLY); // Open the pipe
read(fd, buf, MAX_BUF); // Read the message - unblock the writing process
cout << buf << endl;
close(fd); // Close the pipe
}
return 0;
}
这有什么错我的做法? 这有什么用管的两个程序之间持续沟通的最佳方式是什么?