Articles of Linux操作系统

如何在Linux中重新绑定udp套接字

我是一个有经验的Linux套接字编程人员,正在编写一个有很多出接口的服务器应用程序。 现在,服务器套接字与INADDR_ANY一起绑定到进程开始时的随机源端口。 稍后在提交对特定节点的响应时,我需要分配一个固定的源IP地址 。 标准的做法是调用bind。 但是,绑定被调用一次端口号, 连续调用失败,无效的参数错误。 创build一个新的套接字并不是一个好的select,因为在响应某些客户端时,我将不得不经常这样做。 我也探讨了SO和许多套接字选项,如IP_FREEBIND,但它并不完全符合我的scheme。 也许使用IP_PKT_INFO和设置源地址可能会工作,除非它遭受同样的问题,即不允许套接字一旦绑定到INADDRANY重新绑定到一个固定的源IP后者。 有没有办法解除绑定现有的套接字或替代方式来设置传出数据包中的源IP地址? int sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock < 0) printf("Failed creating socket\n"); struct sockaddr_in addr; memset(&addr, 0, sizeof(struct sockaddr_in)); addr.sin_family = AF_INET; addr.sin_port = htons(1500); addr.sin_addr.s_addr = INADDR_ANY; // first bind succeeds if ( (status = bind(sock, (struct sockaddr *) &addr, sizeof(addr))) < 0) […]

不能–enable-pcregrep-libbz2,因为没有findbzlib.h

我正在尝试安装pcre 8.32。 当我试图安装下面的这个教程,我得到这个错误: **Cannot –enable-pcregrep-libbz2 because bzlib.h was not found**. 然后我试了一下: sudo yum install libbz2-dev ,现在是说No package libbz2-dev available.Error: Nothing to do 我完全困惑。 我接下来要做什么?

在Ubuntu上通过PulseAudio从Java播放audio文件时出错

shell上的消息是: Exception in thread "main" java.lang.IllegalArgumentException: Invalid format at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142) at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99) at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283) at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402) at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:453) at reprod.ReproducirFichero(reprod.java:16) at reprod.main(reprod.java:44) 我尝试下载新的audio驱动程序,我尝试重新安装openJDK 7和openJRE 7,也尝试安装java 7。 我已经certificate我的代码在另一台电脑,它的工作原理,我使用的台式机主板是英特尔d525mw,我试图播放的audio格式是.wav。我使用的Linux版本是Ubuntu 12.04.3。请帮我。谢谢 这里是我的代码派对,我尝试播放.wavaudio格式 import javax.sound.sampled.*; public class reprod { public static void play(){ try { Clip cl = AudioSystem.getClip(); File f = new File("/home/usr/Desktop/d.wav"); AudioInputStream ais = AudioSystem.getAudioInputStream(f); cl.open(ais); […]

等待多个信号而不需要等待(C / C ++ Linux)

如果我有多个信号量,那么我怎么能有一个进程块,直到至less有一个信号量是免费的? 我知道我可以用忙等待循环来做到这一点,例如: // blocks until one of the semaphores in sems is free, returns // index of semaphore that was available int multiple_sem_wait(sem_t **sems, int num_sems) { while (true) { for (int i = 0; i < num_sems; ++i) { if (sem_trywait(sems[i]) == 0) { return i; } } } } 但是有没有办法做到这一点,没有繁忙的循环? 也许除了应该使用的信号量外,还有一些IPC技术? 谢谢

编译我自己的内核(而不是从linux-kernel源代码)

我从这里跟随内核教程 即时通讯编辑我的文件有问题。 当我尝试编译时出现以下错误: main.c:8: error: expected declaration specifiers or '…' before 'size_t' main.c:8: error: conflicting types for 'memcpy' ./include/system.h:5: note: previous declaration of 'memcpy' was here main.c: In function 'memcpy': main.c:12: error: 'count' undeclared (first use in this function) main.c:12: error: (Each undeclared identifier is reported only once main.c:12: error: for each function it appears […]

语法错误:文件结束意外(期待“那么”)

我正在做一个Minecraft服务器插件更新的代码我是一个新的shell脚本,所以我不知道很多… 当我运行这个代码时,我得到一个错误: #!/bin/sh export PATH=$PATH:. #Options PLUGINDOWNLOADLINK=http://api.bukget.org/3/plugins/bukkit/$PLUGINNAME/latest/download # Plugin folder if [ -f $PWD\plugins ]; then PLUG=$PWD\plugins else PLUG=$PWD\plug-ins fi cd $PLUG if [ ! -f .\update ]; then mkdir update echo Making Directory "update".. fi # Plugins Found for i in $( ls ); do PLUGINNAME=$i done cd .\update wget $PLUGINDOWNLOADLINK # No Plugins […]

执行错误 – 未find“Qt_5”

在ubuntu 15.10上执行eiskaltdc ++时,出现以下错误: eiskaltdcpp-qt: /usr/lib/x86_64-linux-gnu/libQt5Multimedia.so.5: version `Qt_5' not found (required by eiskaltdcpp-qt) eiskaltdcpp-qt: /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5: version `Qt_5' not found (required by eiskaltdcpp-qt) eiskaltdcpp-qt: /usr/lib/x86_64-linux-gnu/libQt5Concurrent.so.5: version `Qt_5' not found (required by eiskaltdcpp-qt) eiskaltdcpp-qt: /usr/lib/x86_64-linux-gnu/libQt5Sql.so.5: version `Qt_5' not found (required by eiskaltdcpp-qt) eiskaltdcpp-qt: /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5' not found (required by eiskaltdcpp-qt) eiskaltdcpp-qt: /usr/lib/x86_64-linux-gnu/libQt5Xml.so.5: version `Qt_5' not found (required […]

如何通过SSHredirect回声输出到文件

我试图通过ssh将一个variables的内容redirect到一个文件。 喜欢: ssh $MachineIP echo $CM_Config > $mName/CM_CONFIG 其中$CM_Config是我的主机中的一个本地variables,包含多行, $mName/CM_CONFIG位于$MachineIP我应该如何将本地variablesredirect到远程文件,假设我的sshconfiguration是正确的。 提前致谢

在Linux和OS X上的ns精度单调时钟

clock_gettime(CLOCK_MONOTONIC, …)可以在Linux中使用,但不能在OS X上使用clock_gettime(CLOCK_MONOTONIC, …)计时器在OS X中可用,但在Linux中不可用。 我怎样才能得到一个ns的精度单调时钟在C和Linux和OS X的作品?

使用gnuplot来绘制sqlite数据库

我有一个包含以下格式的基本天气信息的sqlite数据库: temp1 temp2 pressure humidity 22 23 1024 40 24 25 1027 45 25 26 1020 62 18 15 1019 80 我怎样才能使用gnuplot来绘制这个数据? 在能够绘制数据之前,我必须重新排列数据吗?