Tag: linux

如何在Ctrl + D后重新启动stdin?

运行期望从终端输入的程序我可以通过Ctrl + D“关闭”标准输入。 之后有什么方法可以重新打开stdin吗?

linux / init.h:没有这样的文件或目录

我正在尝试为我的一类构建一个内核模块,并且我遇到了一堵错误,但是在所述墙的顶部是臭名昭着的“没有这样的文件或目录”错误。 这似乎是问题的根源。 这不仅影响init.h,还影响module.h和kernel.h。 该计划的前三行如下: #include #include #include 在浏览类似的问题时,我环顾四周并尝试了其他路径,这些文件应该是什么,但到目前为止还没有任何工作。 最奇怪的是我已经使用过这个模块; 我提供了顶级的初学者代码(我没有改变任何东西),它没有给我那个错误。 虽然,显然后面的代码是不同的,但这似乎是目前最大的问题。 完整代码如下: #include #include #include /* This function is called when the module is loaded. */ int simple_init(void) { printk(KERN_INFO “Loading Module\n”); static LIST_HEAD(birthday_list) struct birthday{ int day; int month; int year; struct list_head list; }; struct birthday *ptr, *next; struct birthday *bob; struct birthday […]

linux上使用rtkaio的aio_write有时很长

我在linux上使用async io和rtkaio库。 在我的测试中,一切都很完美,但是,在我的实际应用程序中,我看到aio_write应该返回非常快,非常慢。 将128KB写入O_DIRECT填充文件可能需要100多毫安。 我的测试和应用程序使用相同的I / O大小,我检查相同的文件系统(GFS)。 我添加了计数,我发现有大约50%的异步io操作是短的(短于2毫米)和50%的长(超过2毫米)。 我还检查了测试和应用程序都使用相同的rtkaio库。 我很丢失,任何想法我应该在哪里看? 另一个我的相关问题: / proc / sys / fs / aio-nr永远不会高于1024(Linux上的AIO)

如何使用Linux系统调用在C中更改用户密码?

我正在尝试编写一个C程序来使用Linux系统调用来更改用户密码。 我已经尝试使用/etc/passwd和/etc/shadow文件,但由于密码已加密,我遇到了问题,你可以帮我解决这个问题吗? void main(int argc,char ** argv){ uid_t uid; struct passwd *pw; uid = getuid(); if (argc > 1) pw = getpwnam(argv[1]); else pw = getpwuid(uid); //system(“passwd”); //printf(“%i”,execl(“/usr/bin/passwd”,”passwd”,pw->pw_name)); //here I tried to use execl but it returns error } 我使用系统(“passwd”),但我不认为我的老师会接受。 在其余部分,我只是想了解getpw ……的东西,这并不重要。

读取过程中的Unix / Linux管道行为在写入过程之前终止

我有这个: $ ls -lh file -rw-r–r– 1 ankur root 181M Sep 23 20:09 file $ head -6 file z abc abc abc abc abc $ cat file | grep -m 1 z z 题: 为什么最后一行中的cat命令行没有过早地使用SIGPIPE死亡? 我认为这应该发生,因为grep终止与cat file相比,没有时间终止。 随着阅读过程的消失, cat将尝试写入破损的管道并且应该用SIGPIPE死掉。 更新: 我最后写了这个:readstdin.c # include # include int main() { ssize_t n ; char a[5]; n = […]

可以通过gtk_menu_popup发布焦点显示gtk菜单吗?

我正在重构一些代码,通常需要用户单击按钮才能显示弹出菜单(它出现在按钮旁边),如果用户将鼠标hover在按钮上,我要做的就是显示弹出菜单预设持续时间的图标,如果用户移动到另一个按钮图标,则再次隐藏它。 但是,通过gtk_menu_popup激活菜单会窃取鼠标和键盘焦点,我在尝试抓取按钮小部件的焦点方面几乎没有取得任何进展。 是否可以将焦点返回到按钮图标?

模拟文件系统访问

我正在设计用户空间中的文件系统,需要对其进行测试。 我不想使用可用的基准测试工具,因为我的要求不同。 因此,为了测试文件系统,我希望模拟文件访问操作。 为此,我首先使用ftw()函数遍历现有文件系统(实验)并列出文件中的所有文件和目录。 然后我调用一个模拟器来模拟许多进程的文件访问。 因此,模拟器随机启动一个过程,即它分叉一个执行真正过程所做的事情的线程。 线程随机选择文件操作(读,写,重命名等)从列表中选择此操作的参数(由ftw()生成)。 该线程执行许多此类文件操作,然后退出标记进程的结束。 模拟器继续产生线程; 线程执行可以像实际进程那样重叠。 现在,由于操作由线程执行,文件将被插入,删除,重命名,并在文件列表中更新。 我还没有开始编码。 这个计划看起来很健全吗? 我也不确定如何编码模拟器…它将如何在一段时间内产生线程。 我应该使用一些随机延迟来做到这一点。 谢谢

无法链接到OpenCV的共享库(Linux)

线下面写的问题已经解决,但我面临一个新的相关问题。 与以前略有不同,我正在编译和链接示例OpenCV代码: g++ facedetect.cpp -o facedetection -I /home/harsh/Downloads/OpenCV-2.0.0/include/opencv/ -L/home/harsh/Downloads/OpenCV-2.0.0/lib/ -lcv -lcxcore -lcvaux -lml -lhighgui 这不会给出任何错误,但是当我使用运行可执行文件时 ./facedetection 我收到此错误: ./facedetection: error while loading shared libraries: libcv.so.2.0: cannot open shared object file: No such file or directory 当我进行符号链接时,使用: ln -s libcv.so libcv.so.2.0 然后错误是: ln: failed to create symbolic link ‘libcv.so.2.0’: File exists 不知道怎么解决这个问题。 提前致谢.. IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 我正在尝试创建一个示例OpenCV程序的linux可执行文件,该程序将与.so文件动态链接,并将在未安装OpenCV的机器上执行,但.so文件将出现在该linux机器上。 我已经搜索了许多关于此的post,但仍然没有成功。 我像这样编译opencv: […]

RSA_private_decrypt失败

我用openssl。 首先我创建了私钥/公钥,然后我加密了一个字符串并将结果保存在一个文件中。 当我尝试解密文件时,我的程序失败了。 更重要的是,每次加密文件都不同(我使用md5sum检查)。 我错过了什么? /* gcc -lssl queation.c -o test_ssl #openssl genrsa -out test_private.key 1024 #openssl rsa -in test_private.key -pubout -out test_public.key */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define OPENSSLKEY “test_private.key” #define PUBLICKEY “test_public.key” #define BUFFSIZE […]

如何在vxworks或linux上取消阻止的read / recvfrom系统调用

在任务I中 : … while (1) { if (running == false) break; ret = read(fd, buf, size); /* Or: ret = recvfrom(sock, buf, size, 0, NULL, NULL); */ … } 在任务II中 : … running = true; /* ioctl(fd, FIOCANCEL, 0); */ close(fd); /* Or: close(sock);*/ 在任务II中应该做什么来取消被阻止的任务我 , 在vxworks中 ,有一个函数ioctl(fd, FIOCANCEL, 0)来取消阻塞的读取或写入,但它无法工作。 可能是因为司机不能支持“FIOCANCEL” 。 如何在vxworks和linux中编写任务II? 或者还有其他办法来完成我的任务吗?