|
|
发表于 2005-10-9 23:17:02
|
显示全部楼层
Post by kiron
pathconf(pathname, _PC_PIPE_BUF);
这个函数可帮助我取得系统FIFO的大小,即我一次最多可写进的字节数。
我将要往一个FIFO里写结构,这个结构的大小大于1024个字节,具体多少可能随着要以后结构成员的修改而增加,但就目前的系统而言,它是小于FIFO一次写的值的(这不代表其他的系统也是如此)。
做个比方,假设FIFO的值大小为fifosize,它可由pathconf(pathname, _PC_PIPE_BUF)返回。
我会定义如下结构:
struct myinfo
{
int len;
char data[fifosize - sizeof(int)];
}
上面的当然没办法直接实现。
我的意思是这样:我有什么办法保证我一次性写一个结构到FIFO里:
锁是一种办法
另一种办法是如果能先得到运行时的限制值,就能定义我的结构,可我想不出办法。
或者我没想的其他的办法。。。
有点不太明白, 你假设FIFO的大小为fifosize,而你的结构的size却又刚刚和fifosize一样大,一次就把BUF填满了?没有缓冲作用啊,如果BUF原来还有数据等待处理的,那不是被覆盖掉了?我猜fifosize应该是当时的空闲size吧? |
|