Articles of Linux操作系统

在C中closuresTCP侦听套接字

假设你有一个侦听TCP端口的套接字,并且有一些客户端被连接。 当在C中发出sock_close(fd)并尝试在同一个端口上再次绑定时,绑定失败。 在“netstat -plutnoa”中可以看到一些TIME_WAIT状态,例如: tcp 0 0 127.0.0.1:4567 127.0.0.1:32977 TIME_WAIT – timewait (17.12/0/0) 那么,如何正确断开服务器套接字并立即重新连接到相同的端口?

我如何以编程方式重新启动一个系统服务(而不是apache)从Linux中的Apache?

我需要简单的方法来允许最终用户从同一个框中的apache服务的网页重新启动tomcat。 我们试图让我们的QC部门轻松地将我们的webapp的新版本部署到apache。 我们使用samba,但是我们需要一个简单的方法让他们在部署之前/之后停止/启动tomcat服务器。 这只会用于内部的盒子。 有没有现有的解决scheme呢? 还是会更容易写一些快速的PHP应用程序来处理这个?

linux curl另存为utf-8

尝试使用Linuxcurl从URL下载XML文件。 很确定这个xml是用UTF-8编码的, 怀疑curl -o不保存为UTF-8。 无论如何强制保存为UTF-8curl? 感谢您的build议,我发现: 由于XML feed是dynamic的,并不是所有的时候都包含任何utf-8字符。 有时即使它在xml编码和标题内容types中设置为utf-8,它在整个内容中也没有utf-8字符:charset = utf-8。 当它至less包含一个utf-8字符时,它将被保存为utf-8。 当发生这种情况时,curl不会以utf-8的forms下载,因为没有utf-8字符,这是有道理的,为什么需要存储为utf-8。 这是非常棘手的,一些validation器必须对utf-8有效,因此我仍然需要一个解决scheme来强制它为utf8,因为默认情况下,我所有的xml shld都是utf8编码。 尝试build议通过使用iconv f iso8859-1 utf-8不适用于这种情况下,因为我怀疑它不在iso8859-1也不是。 仍然需要更好的解决scheme。

请解释这个链接错误:在.rodata节中引用

我正在做一个32位SLES10机器。 使用GCC 3.4.2 这是一个示例错误 `.L8245' referenced in section `.rodata' of CMakeFiles/myproj.dir/c++/util/MyObj.o: defined in discarded section `.gnu.linkonce.t._ZN5boost9re_detail9reg_grep2INS0_21grep_search_predicateIPKcSaIcEEES4_cNS_12regex_traitsIcEES5_S5_EEjT_T0_SA_RKNS_14reg_expressionIT1_T2_T3_EEjT4_' of CMakeFiles/myproj.dir/c++/util/MyObj.o

Linux串行端口:阻塞读取超时

我已经学习了许多有用的线程和一些教程,但我仍然有一些应该是非常简单的问题。 这里有一些我已经读过的线索供参考: 如何在读取函数调用中实现超时? 如何从C中的串口打开,读取和写入 无论如何,我有一个问题。 我的代码工作正常,如果我收到数据。 如果我不这样做,read()函数就会停止,唯一的办法就是使用kill -9(注意:我使用信号处理来向读取串行数据的线程发送信号来终止。肇事者,read()调用仍然停止,即使我已经删除了我的信号处理)。 我想要做的是读取一次阻塞并读取块(因此节省CPU使用),但是如果读取没有收到数据,我不想超时。 以下是我正在应用到端口的设置: struct termios serial_struct; serial_struct.c_cflag = B115200 | CS8 | CLOCAL | CREAD; serial_struct.c_iflag = IGNPAR; serial_struct.c_oflag = 0; serial_struct.c_lflag = 0; serial_struct.c_cc[VTIME] = 1; // timeout after .1s that isn't working serial_struct.c_cc[VMIN] = 64; // want to read a chunk of 64 bytes at a […]

Linux ptrace如何不安全或包含竞争条件?

我想通过ptrace()开始一个进程,并且所有的subprocess创build一个沙盒(包括孙辈等)。 ptrace()父进程,即主pipe。 将是一个简单的C或Python程序,从概念上讲,它将限制文件系统访问(基于path名和访问方向(读取或写入)和套接字访问(例如,不允许套接字创build))。 我应该注意什么,以便ptrace() d进程及其subprocess(recursion)不能绕过沙箱? 在fork()时间,主pipe应该做什么特殊的事情来避免竞争? 有没有可能从subprocess中读取例如rename()的文件名参数而没有竞争条件? 这是我已经计划要做的事情: PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORK | PTRACE_O_TRACECLONE PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORK | PTRACE_O_TRACECLONE在fork()时避免(某些)种族PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORK | PTRACE_O_TRACECLONE 默认情况下禁止所有的系统调用,并组成允许的系统调用的白名单 确保*at()系统调用变体(如openat )得到了适当的保护 还有什么我应该注意的?

在Java中获得硬链接计数

我需要从java中的solaris10操作系统中的文件中获取硬链接计数。 parsingls -l不是一个选项。 我尝试使用java的http://bmsi.com/java/posix/index.html的 posix,但无法设法得到它的工作。 有没有其他轻量级的API或代码来获取此信息?

如何从wget输出grep下载速度?

我需要用wget下载几个文件并测量下载速度。 例如我用下载 wget -O /dev/null http://ftp.bit.nl/pub/OpenBSD/4.7/i386/floppy47.fs http://ftp.bit.nl/pub/OpenBSD/4.7/i386/floppyB47.fs 和输出是 –2010-10-11 18:56:00– http://ftp.bit.nl/pub/OpenBSD/4.7/i386/floppy47.fs Resolving ftp.bit.nl… 213.136.12.213, 2001:7b8:3:37:20e:cff:fe4d:69ac Connecting to ftp.bit.nl|213.136.12.213|:80… connected. HTTP request sent, awaiting response… 200 OK Length: 1474560 (1.4M) [text/plain] Saving to: `/dev/null' 100%[==============================================================>] 1,474,560 481K/s in 3.0s 2010-10-11 18:56:03 (481 KB/s) – `/dev/null' saved [1474560/1474560] –2010-10-11 18:56:03– http://ftp.bit.nl/pub/OpenBSD/4.7/i386/floppyB47.fs Reusing existing connection to ftp.bit.nl:80. HTTP […]

如何让C程序等待(在Linux上)?

如何让C程序等待(在Linux上)? (我需要用MPI等待 – 我需要C代码)

SIGKILL信号处理

如果一个linux进程正在等待I / O(即处于SLEEP状态)并发出一个SIGKILL信号,那么在终止( STOPPED状态)时,它将通过RUNNING还是READY状态? 换句话说,对于一个处理系统中断的进程,如SIGKILL生成的进程,是否需要通过RUNNING或READY状态? 在正常情况下,一个进程可以处理来自内核的中断,并且知道SIGKILL有一个相当矛盾的目的,就是杀死一个没有响应的信号,但是我怀疑有多less进程被控制,如果有的话。