Articles of 进程

从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 […]

一个过程组必须有一个正在运行的领导过程?

在类Unix操作系统中,如果一个进程的pid和它的pgid是相等的,那么这个进程是一个进程组的领导者。 但是,如果stream程负责人已经退出,并且同一组中的其他stream程仍在运行,那么成功的领导者stream程是谁?

产生一个独立的孩子

你怎么能用C来产生一个独立的subprocess而不考虑父亲呢? 我想产卵几个过程,创造后不久,他们在工作之前睡觉大约2分钟。 不过,我不希望父亲等到孩子结束,因为在此期间我想要产生更多的stream程。 我在Linux上。