Articles of 进程

堆栈限制和线程之间的关系

在Linux实现(或任何操作系统)中,ulimit -s <value >与堆栈大小(在线程级别)之间的关系是什么? 是<number of threads > * <each thread stack size >必须小于< stack size assigned by ulimit command >有效alignment? 在下面的程序中 – 每个线程分配char [PTHREAD_STACK_MIN]并创build10个线程。 但是,当ulimit被设置为10 * PTHREAD_STACK_MIN时,它不会因为中止而造成内存溢出。 对于stacksize的一些随机值(远小于10 * PTHREAD_STACK_MIN),它是核心转储。 为什么这样? 我的理解是,stacksize表示由进程的所有线程总和占用的堆栈。 线程函数 #include <cstdio> #include <error.h> #include <unistd.h> #include <sys/select.h> #include <sys/time.h> #include <sys/resource.h> using namespace std; #include <pthread.h> #include <bits/local_lim.h> const unsigned […]

java.io.IOException:错误= 11

我遇到了Java ProcessBuilder一个奇怪的问题。 代码如下所示(略为简化) public class Whatever implements Runnable { public void run(){ //someIdentifier is a randomly generated string String in = someIdentifier + "input.txt"; String out = someIdentifier + "output.txt"; ProcessBuilder builder = new ProcessBuilder("./whateveer.sh", in, out); try { Process process = builder.start(); process.waitFor(); } catch (IOException e) { log.error("Could not launch process. Command: " […]

nohup如何工作?

当一个程序运行nohup时,幕后执行的是什么? 父进程的PID是否被改变? 谢谢。 编辑 :我明白,nohup(和disown)导致SIGHUP不发送到进程,如果父进程收到它。 这是否意味着它相当于处理SIGHUP(实际上忽略它)?

我怎样才能用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中的文件的时间戳看起来是在正确的范围,但我找不到一个具有正确时钟的特定文件。 一如既往,我无法修改这个过程。