Articles of Linux操作系统

如何在不修改程序的情况下通过fork启动一个进程的两个实例

我试图从一开始就从另一个进程中分离出一个进程。 为此,我试图修改glibc中的__libc_start_main函数(我使用了一个修改后的glibc),并试图将fork放在那里,但是无法编译glibc,因为每当我尝试这样做的时候都会报错。 什么是其他选项,为什么在__libc_start_main中插入fork不起作用? 再次注意到我想以一种不需要程序修改的方式来完成,那就是glibc中的修改是可以的,但不是程序。 在__libc_start_main ,我尝试像这样分叉。 if (__builtin_expect (! not_first_call, 1)) { struct pthread *self; fork(); // <– here self = THREAD_SELF; /* Store old info. */ unwind_buf.priv.data.prev = THREAD_GETMEM (self, cleanup_jmp_buf); unwind_buf.priv.data.cleanup = THREAD_GETMEM (self, cleanup); /* Store the new cleanup handler info. */ THREAD_SETMEM (self, cleanup_jmp_buf, &unwind_buf); /* Run the program. */ result […]

参数与Linux中的原型错误不匹配

我有以下函数声明的头文件: extern getEmailDetailsResult * getemaildetails_5(getEmailDetailsInput *, CLIENT *); 在我的.C文件中,函数的定义是 getEmailDetailsResult* getemaildetails_5(inputParams, rqstp) getEmailDetailsInput *inputParams; struct svc_req *rqstp; 当我在Unix中编译我的程序时,编译成功了。 但在Linux(gcc 4.1.2),我得到以下错误"error: argument ârqstpâ doesnât match prototype" 。 具有函数原型的.h文件在编译时由OS生成。 什么可能是在Linux的错误的原因?

未定义的引用'cvCreateKalman'

我一直在研究一个简单的Qt C ++ OpenCV应用程序,我想集成一个卡尔曼滤波器。 我包括: opencv/cv.h;opencv/highgui.h and opencv/cxcore.h; 在我的.pro文件中我有: INCLUDEPATH + = -I / usr / include / opencv LIBS + = -lopencv_core \ -lopencv_highgui \ -lopencv_imgproc 但是,当我这样做CvKalman* kalman = cvCreateKalman(8,4,0); 我只是得到未定义的参考cvCreateKalman和collect2:ld返回1退出状态。 编译输出不提供其他信息。 我尝试在网上find帮助,但谷歌并没有真正的帮助。 我也试图包括更多的OpenCV库像毫升或对象跟踪,但没有发生。 对于我来说,似乎CvKalman , CvKalman和cvCreateKalman在自动完成中可用,因为在加载原始的库之后… 任何帮助将不胜感激! 谢谢。

在Linux中使用C ++移动文件

我正在尝试写一些在所有平台上跨卷移动文件的东西。 目前,我使用重命名(…)function来移动文件,这可以在Windows上的卷/驱动器上运行。 但是,在Linux上,我得到一个EXDEV错误(通过strace),杀死我的应用程序:( 看来,我可能需要通过系统(…)调用“MV”,但这似乎很hacky。 这个,或者整合到我的应用程序,这不是一个微不足道的操作。 有没有其他的select可供我使用? 感谢您的时间。

使用csvfix for linux对数值进行sorting – 将数字转换为string

我正在使用csvfix根据第二列中的整数(计数器)值对CSV文件进行sorting。 但是,似乎csvfix在文件中的所有字段中都放置了双引号,并在执行sorting之前将它们转换为string。 结果是行按string值sorting,“1000”在“2”之前。 有一个命令行选项-smq应该是“聪明的引用”,但这不是帮助我。 如果我使用命令csvfix echo -smq file.csv ,则输出在数字字段周围没有引号,但当我将其转换为csvfix sort -f 2 file.csv ,该文件被写入不带引号,但仍按“string顺序”。 是否在sort命令中包含-smq标志也没有区别。 此外,我想csvfix忽略string头的第一行。 Csvfix问题跟踪声明已经实现,但我只能find-ifn标志,似乎完全切割标题行。 这些对于这个工具来说似乎是非常基本的function,所以我可能错过了一些非常简单的东西。 希望有人在这里使用了csvfix并想通了。

X获取并发送按键C ++

我想为Linux做一个文本replace程序。 即我input类似.alog的东西,它被replace为/ usr / local / apache / logs /。 我知道我可以用alaises做到这一点,但是我经常远程login那些没有这个问题的机器。 我也有兴趣做这个学习的目的。 我在网上看到一些关于抓取的信息,并在X中发送了一个窗口的按键,但在工作区中找不到所有窗口的信息。 任何build议如何做到这一点将不胜感激。

无法在Linux(XFS)上装载设备

由于安装时出错,我无法在服务器上安装设备,因此设备为XFStypes。 mount命令返回消息:“mount:structure needs cleaning” 我试过使用xfs_check,它只是返回一条消息,说有日志中需要中继的条目,并且需要运行xfs_repair -L,其中“-L”选项删除日志文件,但可能会导致数据丢失/腐败。 有谁知道,如果你可以访问/挂载驱动器而不修复,或者最小化数据丢失?

单声道全球热键

我试图在Mono和X11中实现全局热键。 不幸的是,应用程序使用System.Windows.Forms ,所以我不能使用在这个问题中提出的GDK#事件filter。 使用XGrabKey作品,但我有事件循环的问题。 closures应用程序时,处理X11事件循环的线程仍挂在XNextEvent 。 有没有办法呢? 我宁愿不要求XPending投票。 我可以以某种方式取消XNextEvent或发送虚拟事件吗? 我在根窗口调用XGrabKey ,所以不幸的是我没有得到像DestroyNotify或UnmapNotify事件。

“无法更新ICEauthority文件…”错误

我在我的电脑上安装了fedora16和omnet ++ 4.2.1。 我刚刚安装了omnet ++ 4.2.2。 当我从现在开始重新启动系统时,我无法以我的用户名login。 Fedora给我这个错误信息:无法更新ICEauthority文件/ home … .ICEauthority。 它使我在桌面背景下无法访问任何东西。 任何build议这个错误将不胜感激。

在linux中使用sedreplacestring后得到一个额外的数字

对于sed来说,这是一个真正的问题。 我有一个原始的input文件如下。 R shthk 0.900000 R mue 0.054100 R nue 0.121400 R oue 0.137700 R ystress 150.23000 我有一个名为Friction1.k的文件,其值为0.123200 。 我想在我的模拟过程中将mue的值更改为该文件中给出的值。 我使用下面的sed脚本。 sed '/\<mue\>/!d;=;s/.* \([^ ]\+\).*/\1/;R Friction1.k' dynaRcoupledmodel.k | sed 'N;N;s|\n|s/|;s|\n|/|;s|$|/|;q' >temp.sed sed -i -f temp.sed dynaRcoupledmodel.k 所以它改变 R shthk 0.900000 R mue 0.123200148 R nue 0.121400 R oue 0.137700 R ystress 150.23000 该软件对格式非常严格,所以我使用这个命令的时间是148或155或159来的额外,我得到* PARAMETER试图改变固有的时间的错误。 之前它为我工作得很好,但现在这是给错误。 […]