Articles of BSD

NGINX:超过65535个连接限制

与HTTP不同,websocket在从HTTP升级后保持长时间连接。 即使操作系统调整为使用所有端口,总共只有65536个端口。 NGINX有可能超过这个限制吗? 一个潜在的解决scheme是SO_REUSEPORT ,但它缺less文档 – 至less除了下面这段,我没有find NGINX版本1.9.1引入了一个新特性,可以使用SO_REUSEPORT套接字选项,这个选项可以在很多操作系统的新版本中使用,包括DragonFly BSD和Linux(内核版本3.9以及更高版本)。 此套接字选项允许多个套接字侦听相同的IP地址和端口组合。 内核然后通过套接字负载平衡传入的连接。 所以,NGINX呼叫accept接受入站连接。 accept()系统调用与基于连接的套接字types(SOCK_STREAM,SOCK_SEQPACKET)一起使用。 它提取监听套接字的挂起连接队列上的第一个连接请求,sockfd,创build一个新的连接套接字,并返回一个引用该套接字的新文件描述符。 新创build的套接字不处于侦听状态。 原始套接字sockfd不受此调用的影响。 新的套接字是否会消耗端口? 如果是,如何超过65535个连接限制?

在哪里可以findLinux版本的sys / queue.h头文件?

sys/queue.h首先出现在4.4BSD中。 Linux已经将它包含在它的发行版中,但版本看起来不是最新的。 FreeBSD版本实现了单链表,单链尾列,列表和尾列。 Linux版本实现列表,尾部队列和循环队列。 我在我的Ubuntu PC中安装了libbsd-dev软件包,然后在/usr/include/bsd/sys/queue.hfind了BSD版本的sys/queue.h 。 我的问题: 我在哪里可以find这个头文件的Linux版本? 这两个实现之间的主要区别是什么? Linux版本只是BSD的过时版本吗?

与OSX上的git一起使用时,lesskeyconfiguration不会被较less的寻呼机使用

这在Linux中正常工作,所以我想知道如果这是一个问题,与Mac版本less运行。 我有相同的~/.lesskey文件设置, lesskey在两个地方成功运行,由此产生~/.less是相同的: ec2-user@domU-12-31-39-0F-D6-5D:~/util 1:13:37 % md5sum ~/.less 0d9f50f079b66b8ef8518940b6674a7e /home/ec2-user/.less % less –v less 436 Copyright (C) 1984-2009 Mark Nudelman 和 slu@Stevens-MacBook-Pro:~/util 21:14 % md5 ~/.less MD5 (/Users/slu/.less) = 0d9f50f079b66b8ef8518940b6674a7e % less –v less 458 (POSIX regular expressions) Copyright (C) 1984-2012 Mark Nudelman 键盘绑定也适用于Mac上的man使用。 只有当我运行git相关的命令,less回退到常规键绑定。

使用内存映射复制文件

我想在C语言中实现一个有效的文件复制技术,在BSD OS上运行。 截至目前,function是使用读写技术来实现的。 我正试图使用​​内存映射文件复制技术进行优化。 基本上我将fork一个mmaps src和dst文件的进程,并将指定字节从src到mem的memcpy()。 进程在memcpy()返回后退出。 msync()在这里是必需的,因为当我实际上用MS_SYNC标志调用msync时,函数花费很多时间返回。 MS_ASYNC标志也是一样的行为? 我)总结一下,避免msync()是安全的吗? ii)在BSD中有没有其他更好的复制文件的方法? 因为bsd似乎不支持sendfile()或splice()? 任何其他等值? iii)是否有任何简单的方法来实现我们自己的零拷贝类似技术的这个要求? 我的代码 /* mmcopy.c Copy the contents of one file to another file, using memory mappings. Usage mmcopy source-file dest-file */ #include <sys/mman.h> #include <sys/stat.h> #include <fcntl.h> #include "tlpi_hdr.h" int main(int argc, char *argv[]) { char *src, *dst; int fdSrc, fdDst; struct […]

如何计算一个词出现在使用shell的文件中的时间?

给定一个包含文本的文件,我想计算一个string“ABCDXYZ”的发生? $ cat file.txt foo bar foo bar baz baz bug bat foo bar so on and so on foo 算数!

如何中止“closures”TCP连接?

一个通常通过调用close()来closures套接字。 但是如果你想重置/中止连接(RST包)呢? 你如何从userland发送它?

在Linux上可用的BSD atos?

是atos二进制数字地址转换为二进制图像符号在Linux上可用,特别是Ubuntu? 它似乎只在OS X上可用。

bsd rc.d的重新生成选项

我运行一个小的守护进程,并希望它被杀死时重新生成。 我在Linux系统的inittab中使用“respawn”选项(这是一个小型的embedded式平台)。 现在我正在BSD上尝试相同的守护进程。 我在“rc.d”中input了我的条目。 但是我找不到BSD的重生选项。 我可以写一个重新生成我的守护进程的小程序。 但是我想知道是否必须有一些已经build立的BSD重新启动杀死的服务。 你知道什么我可以使用。 谢谢 PS我知道我可以在守护进程中做到这一点。 但目前我没有它的来源。

开发没有信息的驱动程序

开源/免费软件社区如何为不提供文档的产品开发驱动程序?

获取核心数(*不* HT线程)

我已经尝试了sysconf(_SC_NPROCESSORS_ONLN)和sysconf(_SC_NPROCESSORS_CONF) ,但它们都返回总数( 如Intel在CPU文档中所称的 )线程(如超线程线程),而不是物理内核现场)。 有没有办法获得物理内核的数量,而不是逻辑? 计数/proc/cpuinfo条目给出8,类似于调用sysconf ,而我的处理器是上面链接的那个。 我对在Linux和BSD上工作的答案感兴趣,最好是以C API的forms。