【发布时间】:2014-03-31 15:24:16
【问题描述】:
我正在尝试编写一个客户端和服务器,它们将使用 POSIX 消息队列交换数据。我尝试通过查看我在互联网上看到的示例和课程文档来做到这一点。但是,我被困住了。当我运行它时,我得到“打开的文件太多”错误。这是我的代码:
客户:
int main( int argc, char *argv[]) {
//Open its queue, which is client queue
char cq_name[10];
sprintf( cq_name, "/cq%i", getpid());
printf( "Client Queue name: %s\n", cq_name);
mqd_t cq_id = mq_open( cq_name, O_CREAT | O_RDWR, 0666, NULL);
if( cq_id == -1) {
printf( "Error in cq: %s\n", strerror( errno));
return -1;
}
printf( "Name: %s\n", argv[1]);
//Connect to the server message queue
mqd_t sq_id = mq_open( argv[1], O_RDWR);
if( sq_id == -1) {
printf( "Error in sq: %s\n", strerror( errno));
return -1;
}
...
服务器:
int main( int argc, char *argv[]) {
//The server message queue
struct mq_attr attr;
attr.mq_flags = 0;
attr.mq_curmsgs = 0;
printf( "Name: %s\n", argv[1]);
mqd_t id = mq_open( argv[1], O_CREAT | O_RDWR, 0666, NULL);
//Check the message queue
if( id == -1) {
printf( "Error: %s\n", strerror(errno));
}
printf( "Check Point 1 - %i\n", id);
...
你能帮我找出问题所在吗?提前谢谢..
【问题讨论】:
-
我的回答能回答你的问题吗?
标签: c linux posix message-queue