Articles of Linux操作系统

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进程被控制,如果有的话。

使用dlopen()dynamic加载共享对象

我正在做一个普通的X11应用程序。 默认情况下,我的应用只需要libX11.so和标准的gcc C和math库。 该应用程序可以扩展Xfixes,Xrender和ALSA声音系统的function。 但是,这些(Xfixes,Xrender和ALSA)function是可选的。 为了实现这种行为,我使用运行时加载,即libXfixes,libXrender和libasound应该是dlopen()。 因此,应用程序可以运行在没有这样的图书馆。 现在我的问题: What library names should I use when calling dlopen()? 我观察到,这些从发行版到发行版有所不同。 例如,在openSUSE 11上,它们被命名为: libXfixes.so libXrender.so libasound.so 然而,在Ubuntu上,这个名字有一个版本号,如下所示: libXfixes.so.3 libXrender.so.1 libasound.so.2 所以试图打开“libXfixes.so”将在Ubuntu上失败,虽然显然在那里。 它只是附有一个版本号。 那么我的应用程序应该如何处理呢? 我应该让我的应用程序扫描/ usr / lib /第一个手动查看我们有哪些库,然后select一个合适的? 还是有没有人有一个更好的主意? 多谢你们, 安迪

如何在Linux中安装freetds?

我正尝试从Ubuntu连接到MSSQL服务器。 我已经安装了像这里build议的freetds。 但是,当我尝试configuration/etc/odbc.ini并input驱动程序path时,我没有位于/usr/local/freetds/lib/libtdsodbc.so驱动程序。 有人可以帮我安装freetds并configurationodbc来使用它吗? * edit1:我在/ usr / lib / x86_64-linux-gnu / odbc中find了libtdsodbc.so。 我应该使用该驱动程序/path吗?