Articles of Linux操作系统

如何避免特定情况下的繁忙循环

我有一个问题,我不知道如何解决。 我有一个多路复用多个连接的程序。 这些连接正在同时接收stream式数据。 我必须configuration非阻塞套接字,因为这些stream具有不同的比特率。 现在我真正做的是将这些套接字保持在一个数组中循环遍历它们,并使用select检测是否有数据要读取,如果不是,则继续到数组中的下一个元素。 除了CPU总是100%的事实之外,它工作得很好。 实际上,如果在某个时候没有任何东西从任何套接字读取,它仍然会循环。 我真的不知道如何在任何套接字上没有数据的情况下阻塞循环,只要有数据就继续下去。 我认为这可能是解决scheme,但我真的不知道我怎么能做到这一点。 该程序必须非常灵活,因为它是一个UDPstreamlogging器,如果阻塞时间太长,这会导致文件滞后。 我非常感谢你。 PS:只是为了信息,我仍然在学习,所以请不要责怪我,即使解决scheme可能是明显的。 编辑: 这里有一些伪代码: 当录制请求进入时,我创build一个新的连接并连接到stream地址。 如果成功,我使用以下函数构build我的fdset: build_fdset() { int ii; /* */ FD_ZERO(&fdset); /* */ for (ii = 0; ii < max; ii++) { if (astRecorder[ii].bUsed != FALSE && astRecorder[ii].socket != INVALID_SOCKET) { FD_SET(astRecorder[ii].socket,&fdset); /* */ if (astRecorder[ii].socket > maxSocket) maxSocket = astRecorder[ii].socket; } } […]

Java – 如何启动我的应用程序,我的电脑,只有DVI输出,需要转换到VGA显示器

当我只有一台电脑,DVI输出和显示器是VGAinput(所以我用一个小DVi到VGA转换器,我有我的显示器的操作系统) Linux显示查询显示如下: $ export DISPLAY=:0.0 && xrandr xrandr: Failed to get size of gamma for output default Screen 0: minimum 640 x 480, current 1280 x 1024, maximum 1280 x 1024 default connected 1280×1024+0+0 0mm x 0mm 1280×1024 0.0* 1024×768 0.0 800×600 0.0 640×480 0.0 legend (0x10c) 74.5MHz h: width 1280 start 1344 end 1472 […]

Linux procfs系统信息api

我正在编写一个工具,我需要收集一些有关运行Linux系统的信息,超出了sysinfo提供的信息,据我所知,其中许多信息都可以从/proc/ file系统获得,但是我需要从C语言级别进行操作,有没有这样做的系统API或者我应该只写function或脚本,为我做,并将结果传递给我的C程序?

在emacs中取消关键页向上和向下翻页

我可以将左下angular的键取消,使用下面的function。 (global-unset-key [left]) (global-unset-key [up]) (global-unset-key [right]) (global-unset-key [down]) 但是,为什么我不能使用全局未设置密钥将页面翻页和翻页? 下面的代码不起作用。 (global-unset-key [pgup]) (global-unset-key [pgdn])

Vim – 强调行之间的额外间距用于加下划线

在我的大部分代码中使用Vim的时候,我通常更喜欢将当前行放在下面,这样就更容易看到我在代码中的位置。 我避免使用像突出显示的那样的东西,因为它通常使我看不到明亮的文本在黑暗的背景主题(即:'torte'colorscheme)更难以看到。 这里是我的Vim colorscheme的一部分: hi CursorLine guibg=#0F2130 ctermbg=NONE cterm=underline hi CursorColumn guibg=#0F2130 ctermbg=darkgray cterm=NONE 然后在我的.vimrc文件(即: ~/.vimrc )中启用这些function。 所以,就我而言,当前行有一个彩色下划线,它是上面的字符的倒置颜色,而当前列有深灰色背景,而其他所有文本只有黑色背景。 我在这里遇到的唯一问题是在编码时看不到下划线('_')字符,因为当前行的下划线与下划线字符的颜色和粗细完全相同。 唯一的解决方法,如果它甚至可能的话,在这里是有道理的是: 增加线之间的间距 使下划线出现在我的文字下面几个像素 在Vim(而不是gVIM)中可以这样做吗? 谢谢。

cPanel / WHM IP禁止 – 如何取消IP

我们在我们的一个网站上使用htaccess基本authentication。 我们的一个客户尝试访问该网站,并多次login失败。 现在,当访问我们的网站,他们只是得到一个“无法显示网页”的错误。 我相信我以前有过这个,我相信在这么多的失败之后IP被禁止了。 我不知道去哪里去WHM / cPanel他们 – 欣赏任何援助! 谢谢 洛伦

如何search多个pdf文件的内容并返回pdf的文件名?

我在这里search了一下,发现了这个: find /path -name '*.pdf' -exec pdftotext {} – \; | grep "your query" 但是,它将返回具有“您的查询”的PDF文件内的文本块。 有一个方法来返回文件名吗?

编译vsftpd 3.0.0失败

我最近试图编译vsftpd 3.0.0,但由于以下编译错误而失败: gcc -c seccompsandbox.c -O2 -fPIE -fstack-protector –param=ssp-buffer-size=4 -Wall -W – Wshadow -Werror -Wformat-security -D_FORTIFY_SOURCE=2 -idirafter dummyinc seccompsandbox.c:63: error: 'O_DIRECTORY' undeclared here (not in a function) seccompsandbox.c:63: error: 'O_CLOEXEC' undeclared here (not in a function) make: *** [seccompsandbox.o] Error 1 由于我对源和环境不太熟悉,我不知道如何解决这个问题。 我想这与新的seccompfilter沙箱有关。 谷歌search向我表明,该错误是可重现的,但没有解决scheme提交。 我的Linux内核版本是2.6.32-5-amd64 ,我使用的是gcc版本4.4.5 (Debian 4.4.5-8) 任何想法欢迎。 (如果您需要更多信息,请不要犹豫,

linux发送带有标志MSG_DONTWAIT的调用

在阻塞套接字上,如果我在每个调用的基础上设置标志MSG_DONTWAIT ,它是否会影响整个套接字,因为套接字现在的行为就像一个非阻塞的套接字,因为这个调用是使用这个标志进行的? 我的意思是将recv在阻塞套接字开始行为像一个非阻塞recv ? 或者这个标志的效果只会持续请求的单一发送呼叫?

如何从tcsh中的LD_LIBRARY_PATH中删除path?

在退出/卸载软件包时,我必须将LD_LIBRARY_PATH重置为其先前的设置,方法是从中删除特定的path。 如何在tcsh或csh中做到这一点? 编辑1澄清。 说LD_LIBRARY_PATH是类似于path1:mypath:path2:path3:path4 ,我不知道 (在我的脚本)除了它必须包含mypath ,[开始编辑2 存储在variables$MY_PATH结束编辑2] 。 然后我想删除mypath ,以便在操作之后LD_LIBRARY_PATH是path1:path2:path3:path4 。