Articles of 进程

进程挂在读取

以下代码通过pipe道读取来自其他进程的消息。 所有进程正确地打印出所有的消息,但是他们将永远不会经过while循环。 尝试在Eclipse中进行debugging,读完所有消息后,它将停止在while循环。 索引是分配给每个进程的编号。 第一个进程的索引== 0.消息本身就是发送消息的进程的索引。 while((n = read(fd[index][0], &mymsg, sizeof(int))) == sizeof(int)) printf("process%d has received a message from process%d\n", index, mymsg); 任何想法,为什么会发生? 以下是每个进程如何写入另一个进程: // Write to other process if(write(fd[index2][1], &index, sizeof(int)) != sizeof(int)) sys_error(2); 这是做了五次。 fd是每个进程的读写结束表。

如何找出物理内存的哪些部分包含哪些进程的数据/指令?

我想知道,当前正在运行的进程的代码和数据在物理上被放置在RAM中。 如果可以用graphics表示这种分布,应该是非常有用的信息,所以独特的进程ID是具有不同颜色的点。 如何以及在哪里获得这些信息? 它看起来像/ proc不提供它。 我应该编写一个内核模块还是传统的用户空间应用程序还可以检索这些信息(如果是 – 如何?)?

Linux:如何检测一个进程是否过多?

有没有一种方法来检测编程? 另外,什么是Linux命令来检测哪些进程颠簸?

在Linux中的进程之间传输套接字

如何在Linux下的进程之间传输套接字的所有权? Windows有一个Socket.DuplicateAndClose函数,但有没有办法在Linux上做到这一点? 如果它有所作为,我想将所有权从父进程转移到subprocess,并且subprocess在我获得套接字的时候还不会启动,所以我开放了有趣的解决scheme,涉及fork和exec系列的function。

杀死一个10分钟的僵尸进程在Linux bash脚本

我一直在修补yukondude的正则expression式,并没有取得什么成就。 我试图杀死超过10分钟的进程。 我已经知道进程ID是什么了。 我每10分钟循环一次数组,看看是否有任何徘徊的特效是需要杀死的。 有人对此有任何想法吗? ps -eo uid,pid,etime 3233332 | egrep ' ([0-9]+-)?([0-9]{2}:?){3}' | awk '{print $2}' | xargs -I{} kill {}

套接字不发送整个内容在Linux(Ubuntu的)

我在通过TCP套接字发送大量数据时遇到了一个问题,花费了大约3天的时间来试图解决这个问题,并且失败了,我决定最好在这里寻求帮助/build议。 我的项目我写了一个基本的HTTP服务器(略有不相关的)可以运行lua脚本来输出页面。 这在Windows(32位)下完全正常工作。 问题 当通过Ubuntu Linux(64位)上的TCP套接字发送中/大文件(大约8000字节及以上的任何内容似乎有问题)时,它们显示为以不同的长度截取(浏览器中显示的结果是8000和10200字节,当我检查发送函数的返回值时,每次发送结束时就是9926字节,没有错误。 更小的文件发送绝对好,并没有在Windows下的问题。 继续这个信息,我认为这可能是一个缓冲区大小问题,所以我做了 cat /proc/sys/net/ipv4/tcp_mem 其中输出188416 192512 196608 这些数字远高于9926,所以我认为这不是问题。 我正在使用CSimpleSockets作为套接字库,我以前没有任何问题。 如果问题出在这个库的内部,我在unix下使用send函数的代码是: #define SEND(a,b,c,d) send(a, (const int8 *)b, c, d) send(socket, buffer, bytestosend, 0); 在传递给要发送的操作系统之前,缓冲区会从const char *为const unsigned char*到const int8 * 。 好吧,我认为这涵盖了我检查的一切。 如果您需要更多的信息,或者我错过了任何明显的信息,我会尽我所能提供。 谢谢你的帮助!

如何在UNIX上实际find一个进程的死锁原因?

在UNIX上,一个进程卡住了,你怀疑它可能是死锁,find死锁的原因,以及如何删除和避免它? 我知道死锁的四个条件: 相互排斥:一次最多可以将一个资源分配给一个进程(不共享)。 保持并等待:持有资源的处理被允许请求另一个资源。 不抢占:stream程必须释放其资源; 他们不能被带走。 循环等待:必须有一连串的过程,使得链中的每个成员都在等待链中下一个成员持有的资源。 但是,他们是理论上的,如何实际上确定unix上的死锁? 只有看到一个过程没有进展? 如何find哪部分代码导致了死锁和原因? 如果你被允许使用工具,可以使用什么? 谢谢

在Linux 64位上组合C和汇编(32位代码)

我有一个64位的Ubuntu操作系统,我一直在学习32位大会。 我正在试图编译这两个文件: square.s: #square.s .section .text .globl sqr .type sqr, @function sqr: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax imull %eax, %eax popl %ebp ret main.c: //main.c #include <stdio.h> extern long sqr(long); int main(int argc, char* argv[]) { long squared = sqr(10); printf("%lu\n", squared); return 0; } 在我的32位虚拟机上,我用这个命令编译它们 gcc main.c square.s -o test 它的工作。 […]

在Linux下从C程序运行多个C程序

我想在Linux下学习一些关于进程通信的知识,所以我写了两个简单的C程序来相互通信。 然而,每次都要手动运行它们有点麻烦,所以我想知道有没有办法让程序运行它们,如下所示: ./runner program1 program2 我正在使用最新的Ubuntu和Bash shell。

任何干净,快捷的方式杀死一个进程,包括所有的subprocess

我知道这听起来像是一个常见的问题,我应该能够在档案中find答案。 试图寻找一些,但无法find。 所有的答复看起来非常冗长。 任何一个class轮在Linux中杀死一个进程,包括所有的subprocess。