在我的应用程序中,我hyave创建了一个datagarm套接字并绑定了一个端口说9999到ip 192.168.173.1现在我想将端口绑定到一个新的IP说192.168.173.2但是我无法做到这一步我遵循的步骤
1 DatagramSocket s= new DatagramSocket(port,ip1);
2 s.disconnect();
s.close();
s= new DatagramSocket(port,ip2);
Run Code Online (Sandbox Code Playgroud)
但这给了一个
java,net,BindException :Address already in use : Cannot bind
Run Code Online (Sandbox Code Playgroud)
任何见解都会非常有帮助.
我正在尝试 tar 一些文件并通过 php passthru 命令将它们传递给用户。
问题是,即使 tar 文件应该只有 2k,但它始终是 10240。有趣的数字对吧?
所以我把它分解为:
-sh-4.1# tar czf - test | wc -c
10240
Run Code Online (Sandbox Code Playgroud)
对比:
-sh-4.1# tar czf test.tar.gz test && wc -c test.tar.gz
2052 test.tar.gz
Run Code Online (Sandbox Code Playgroud)
所以 tar 显然是用 NULL 填充文件。
那么我怎样才能让 tar 停止这样做。或者,我如何去除尾随的 NULL。
我正在运行tar (GNU tar) 1.15.1并且无法在我的工作站上重现tar (GNU tar) 1.23,因为这是一个嵌入式项目升级不是我正在寻找的答案(还)。
编辑:我希望有一个确实需要写入文件系统的解决方法..也许是一种阻止它填充的方法,或者通过 sed 管道它或其他东西来去除填充。
所以我有这个应用程序允许匿名用户写但不读特定路径.他们将数据发布到审核的留言板上.
但根据我目前的安全规则,他们也可以覆盖现有数据.如何禁止更新并仅允许新帖子.
我目前的安全规则:
{
"rules": {
".read": "auth != null",
".write": "auth != null",
"inbox" : {
".write": true,
},
"moderated" : {
".read": true,
},
}
}
Run Code Online (Sandbox Code Playgroud) 我试图监视我的线程的堆栈使用情况.要做到这一点,我需要知道线程堆栈的地址,我发现这样做的唯一方法是使用设置堆栈pthread_attr_setstack().
我目前正在使用mmap来分配内存:
pthread_attr_t ptAttr;
pthread_t pth;
pthread_attr_init(&ptAttr);
void *stack = mmap(NULL, stksize, PROT_WRITE|PROT_READ, MAP_ANONYMOUS|MAP_SHARED, -1, 0);
pthread_attr_setstack(&ptAttr, stack, stksize);
pthread_create(&pth,&ptAttr,threadFunc,&info);
Run Code Online (Sandbox Code Playgroud)
所以第一个问题,这是一个分配内存的好方法mmap吗?标志是否正确?我应该使用malloc吗?这将在没有虚拟/交换内存的低资源设备上运行.
第二个问题,这个内存会在线程死亡时自动释放吗?如果您不确定,有没有办法找出它是否已被释放?