我的MacBookPro出现一个很奇怪的问题,每当用满6个小时之后电脑上的所以软件都打不开了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的MacBookPro出现一个很奇怪的问题,每当用满6个小时之后电脑上的所以软件都打不开了相关的知识,希望对你有一定的参考价值。
我的MacBookPro出现一个很奇怪的问题,每当用满6个小时之后电脑上的所以软件都打不开了,打开终端就会出现 [forkpty: Resource temporarily unavailable]
[未能创建新的进程和打开伪终端 (pseudo-tty)。] 这样的提示,而且是必现的,由于我是做软件开发的,电脑每天都在不断的使用,每隔6小时都出现,我重启之后又没有这个问题了,真是奇怪。跪求各位大神教教我怎么解决。
C ++套接字表现得很奇怪[关闭]
【中文标题】C ++套接字表现得很奇怪[关闭]【英文标题】:C++ sockets acting weird [closed] 【发布时间】:2013-10-03 17:18:20 【问题描述】:我正在尝试建立一个服务器,但 accept() 函数出现错误。问题是,它接受空连接(我不知道它们来自哪里)并且它还从它们那里接收空的东西。
这是我的 Server.cpp 类
#include "Server.h"
#include <thread>
Server::Server()
usercount = 0;
int RetVal=0;
WSAData wsaData;
WORD DllVersion=MAKEWORD(2,1);
RetVal=WSAStartup(DllVersion,&wsaData);
if( RetVal != 0 )
MessageBoxA(NULL,"WinSocket startup failed","Error",MB_OK | MB_ICONERROR );
exit(1);
bool Server::ServerStartUp()
sListen = socket(AF_INET, SOCK_STREAM, NULL);
sConnect = socket(AF_INET, SOCK_STREAM, NULL);
addr.sin_addr.s_addr = inet_addr("192.168.0.100");
addr.sin_port = htons(69);
addr.sin_family = AF_INET;
bind(sListen, (SOCKADDR*)&addr,sizeof(addr));
listen(sListen,64);
// CreateThread(0,0,&Server::ServerThread,0,0,0);
std::thread t1(&Server::ServerThread,this);
t1.join();
return true;
void Server::ServerThread()
int addrlen = sizeof(addr);
for(;;Sleep(10))
if( sConnect = accept( sListen, (SOCKADDR*)&addr, &addrlen ))
cout << " FUTU ";
char* UserName = new char[256];
ZeroMemory(UserName,256);
recv(sConnect,UserName,256,0);
char* Password = new char[256];
ZeroMemory(Password,256);
recv(sConnect,Password,256,0);
users[ ++usercount ] = new Client(UserName,Password,sConnect);
if( users[usercount] ->GetLogInSuccesful() )
send(sConnect,"0x0001",6,0);
else
send(sConnect,"0x0002",6,0);
我也有一个结构几乎完全相同的工作示例,所以我不知道我在哪里或做错了什么......
工作示例:
int ReturnValue = 0;
ReturnValue = InitWinSocket();
if(ReturnValue != 0)
MessageBoxA(NULL,"WinSocket startup failed","Error",MB_OK | MB_ICONERROR );
exit(1);
users = new User[64];
sListen = socket(AF_INET, SOCK_STREAM, NULL);
sConnect = socket(AF_INET, SOCK_STREAM, NULL);
addr.sin_addr.s_addr = inet_addr("192.168.0.100");
addr.sin_port = htons(1234);
addr.sin_family = AF_INET;
bind(sListen, (SOCKADDR*)&addr,sizeof(addr));
listen(sListen,64);
int addrlen = sizeof(addr);
for(;;)
if(sConnect = accept(sListen , (SOCKADDR*)&addr,&addrlen))
int SuccesfulLogIn = 0;
SuccesfulLogIn = CheckLogInInformation();
if(SuccesfulLogIn == 0)
send(sConnect,"0x0002",6,0);
else
users[++ConnectionsCounter].UserConnection = sConnect;
users[ConnectionsCounter].ID = ConnectionsCounter;
users[ConnectionsCounter].IsUserInGame = false;
cout<<"Smb Connected";
send(sConnect,"0x0001",6,0);
char* Id = new char[20];
_itoa ( users[ConnectionsCounter].ID,Id,10 );
send(sConnect,Id,sizeof(Id),0);
UserThreadHandler[ConnectionsCounter] = CreateThread(0,0,(LPTHREAD_START_ROUTINE)UserThread,(LPVOID)ConnectionsCounter,0,0);
在第二个例子中,它只接受正确的连接,实际上在它到达 accept() 时一直等待,直到找到连接。
我想知道我做错了什么。
因评论而编辑:
发现实际上是我的绑定函数不起作用,我该如何解决这个问题?
【问题讨论】:
请正确缩进代码。 开始一个新线程并在下一行加入它到底有什么意义? 【参考方案1】:我的猜测是,您正在尝试在不允许您运行程序的用户执行此操作的操作系统上侦听特权端口(低于 1024 的端口)。 bind()、listen()、accept() 等返回值表示成功或失败——你不应该在没有检查这些返回值的情况下调用它们。
【讨论】:
谢谢你我发现绑定功能不起作用,我也将端口更改为1234。任何线索我的绑定功能有什么问题? 正如我所说,您正在绑定到一个低编号端口。在 UNIX 上,只有 root 可以做到这一点。在 Windows 上,我确信也有类似的限制。 通过将 IP 地址编辑为 addr.sin_addr.s_addr = ADDR_ANY 来管理它。因为是你的回答让我意识到绑定不起作用,所以你得到我的 +1 ;)以上是关于我的MacBookPro出现一个很奇怪的问题,每当用满6个小时之后电脑上的所以软件都打不开了的主要内容,如果未能解决你的问题,请参考以下文章
每当节点服务器上的数据发生变化时编写整个 SQL 表(很奇怪,请耐心等待)