Articles of 进程

我怎样才能用Perl杀死整个进程树呢?

什么是从Perl脚本中杀死一个进程及其所有subprocess的最好方法? 它应该至less在Linux和Solaris下运行,不需要安装任何额外的软件包。 我的猜测是通过parsing/ proc中的文件或parsingps的输出(在Linux和Solaris之间似乎都不可移植)来获取所有进程及其父母的列表。 然后杀死树中的所有进程(这似乎容易出现竞争状况)。 我可以忍受这种特殊情况下的竞争条件,但是我怎样才能得到进程列表呢?

Linux CFS计划代码在哪里?

我有完整的Linux版本3.13的源代码。 我试图findCFS调度程序的源代码,根据stream行的书籍应该驻留在/kernel/sched.c中的基本调度程序代码和/kernel/sched_fair.c专门为CFS代码。 我只是在我的3.13 linux代码里面的这两个文件做了一个代码全局search,结果没有任何结果。 我还单独search了/linux-3.13/kernel文件夹和/linux-3.13/kernel/sched文件夹。 仍然没有运气。 我想让别人知道CFS在新的linux内核代码域(linux-3.13。*)中的位置。 请原谅,如果我在这里失去了一些东西。 我是一个初学linux内核的人。

从C传递参数到64位Linux大会

我试图写我的第一个汇编函数从C程序中调用。 这是.c部分: #include <stdio.h> extern int sum(int a, int b); int main() { printf("2+3 = %d\n", sum(2,3)); return 0; } 和汇编部分: .text .global sum sum: push %rbp mov %rsp, %rbp mov 8(%rbp), %rax add 12(%rbp), %rax pop %rbp ret 根据一些教程,参数应该存储在%ebp(32位版本)寄存器中。 但是,当我编译上面的代码,我得到这个结果: 2+3 = 4195607 有人能解释我在做什么错吗? 哦,这里是Makefile: test: test.o testc.o gcc -o test test.o testc.o test.o: […]

64位Linux机器中最大可能的共享内存大小

我有64位Linux机器(Intel Xeon L5410 @ 2.33GHz)。 **meminfo:** MemTotal: 24672736 kB MemFree: 145372 kB Buffers: 181896 kB Cached: 22004648 kB SwapCached: 195072 kB Active: 9761028 kB Inactive: 13964532 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 24672736 kB LowFree: 145372 kB SwapTotal: 17414452 kB SwapFree: 15618852 kB Dirty: 2125148 kB Writeback: 0 kB AnonPages: 1358396 kB Mapped: […]

Linux:终止一系列进程的最可靠的方法

如果我们假设:在Linux中终止一系列进程的最好方法是什么: 在我们开始清理之前,家庭中的任意进程可能会被杀死/终止; 结果,如果subprocess没有终止,他们的PPID将是1 进程可以更改进程组 我正在看的特定场景是Bash,但更一般的技术,更好。

MAC:setgroups与errno 22失败

我是新来的MAC,目前正在做一些项目,这里是代码: #include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <errno.h> #include <grp.h> #include <pwd.h> #include <string.h> int GetSuplementaryGroups(const char *userName, gid_t *&groups, int &groupc) { gid_t *suplementaryGroups = NULL; int ngroups = 0; int result = -1; struct passwd *pw; pw = getpwnam(userName); if (pw == NULL) { fprintf(stderr, "Error is %d.\n", errno); return -1; } […]

如何确定Linux进程启动的date和时间?

如果我查看/ proc / 6945 / stat,则会得到一系列数字,其中一个是进程已经运行的CPU-centisecond数。 但是我正在重负载的机器上运行这些进程,我感兴趣的是工作完成时的时钟,为此我想知道它开始的时钟时间。 / proc / 6945中的文件的时间戳看起来是在正确的范围,但我找不到一个具有正确时钟的特定文件。 一如既往,我无法修改这个过程。

具有相同名称的多个进程

我有一个运行在Linux 2.6.13和WindRiver Linux 3.0上的应用程序。 在Linux 2.6.13中,当我这样做 ps -eaf | grep myapplication 输出显示“myapplication”的多个条目 如果我在WindRiver Linux 3.0中给出相同的命令,则输出只显示“myapplication” 差异是否与操作系统的差异有关? 请告诉我这个的原因?

Linux进程间可重入信号量

我正在将一个Windows应用程序移植到Linux,我有一个同步问题。 在Windows中,我使用一个名为互斥体的系统级来同步对共享内存块的访问。 我如何在Linux中模拟? 我已经使用semget创build了一个SystemV信号量。 问题是,它不是可重入的,如果我已经拥有它将阻止,不像在Windows上。 我可以添加一个引用计数,但是然后我需要同步访问,这意味着另一个(这次只针对当前进程)互斥体。 是否有一个类提供了一个可重入的进程间锁(也许在升压)? 顺便说一下,使用文件locking是不可接受的,因为它可能会太慢(我需要两个进程之间的超低延迟通信)。

Linux,waitpid,WNOHANG,subprocess,僵尸

我作为守护进程运行我的程序。 父进程只等待subprocess,当它意外死了,fork再等待。 for (; 1;) { if (fork() == 0) break; int sig = 0; for (; 1; usleep(10000)) { pid_t wpid = waitpid(g->pid[1], &sig, WNOHANG); if (wpid > 0) break; if (wpid < 0) print("wait error: %s\n", strerror(errno)); } } 但是当subprocess被-9信号杀死时,subprocess就进入僵尸进程。 waitpid应该立即返回subprocess的PID! 但是waitpid在大约90秒后得到了PID号码, cube 28139 0.0 0.0 70576 900 ? Ss 04:24 0:07 ./daemon […]