我正在编写一些代码来替换带有POSIX消息队列的TCP套接字.有时程序会崩溃(仍在开发中),并且不会删除创建的队列(不执行:mq_close()+ mq_unlink()).当我再次运行代码时,这会导致问题.
有没有办法使用命令行删除/删除这些队列?我试过用:ipcs -q.这无法列出任何队列.
我试过了:lsof | grep queue-name.他们确实出现在这里.
理想情况下,我想使用:ipcrm.
我继承了一些调用的TCP代码:
bind(tcpSocket, (struct sockaddr*)&server_addr, sizeof(server_addr));
Run Code Online (Sandbox Code Playgroud)
在致电之前
setsockopt(tcpSocket, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int));
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,这导致了消息:"地址已在使用中".只需交换调用顺序即可解决问题.
这提出了一个问题:一般来说,是否应该setsockopt()在致电前拨打电话bind()?在打电话之前connect()?
我正在面试潜在的软件工程候选人,并希望将这段C ++代码翻译成Ada:
#include <iostream>
int main(int argc, char *argv[])
{
int *W = NULL;
try { *W = 3; }
catch (...) { std::cout << "default exception"; }
}
Run Code Online (Sandbox Code Playgroud)
与C ++代码一样,我希望Ada代码导致“被信号SIGSEGV终止”。
顺便说一句,我正在使用最新的GNAT(GNAT 9.1.1 20190503(Red Hat 9.1.1-1))