1.[代码][C/C++]代码
def process_listen(listen_fd)
#epoll 或 select 监听listenfd
if __name__ == "__main__":
reload(sys)
sys.setdefaultencoding('utf8')
InitLog()
port = int(sys.argv[1])
try:
listen_fd = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
except socket.error, msg:
logger.error("create socket failed")
try:
listen_fd.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
except socket.error, msg:
logger.error("setsocketopt SO_REUSEADDR failed")
try:
listen_fd.bind(('', port))
except socket.error, msg:
print "bind fail"
logger.error("bind failed")
try:
listen_fd.listen(10240)
listen_fd.setblocking(0)
except socket.error, msg:
logger.error(msg)
child_num = cpu_count()
c = 0
while c < child_num:
c = c + 1
if 'Linux' in platform.system():
newpid = os.fork()
if newpid == 0:
process_listen(listen_fd)
else:
pass
process_listen(listen_fd)