我在C中编写了一个等待事件的程序,然后按system()
功能运行外部系统命令.
while( true ){
wait_for_event();
system("cmd");
}
Run Code Online (Sandbox Code Playgroud)
我有一个严重的问题,这cmd
是一个繁重的命令,需要几秒钟才能完成,我的应用程序在这段时间内错过了一些事件.
所以我决定把这个system
非常重的函数移到另一个程序中,所以我改变了我的程序如下:
while( true ){
wait_for_event();
write_to_fifo("cmd");
}
Run Code Online (Sandbox Code Playgroud)
并写了另一个程序:
while(true){
system(read_from_pipe());
}
Run Code Online (Sandbox Code Playgroud)
但它没有帮助,因为如果生产者(第一个程序)的写入速度比消费者(第二个程序)快,那么消费者会错过一些数据!
有没有办法解决这个问题?