Articles of 进程

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上。

为什么fork()在subprocess中返回0?

正如我们所知,fork()将返回两次,即两个PID。 subprocess的PID在父进程中返回,并在subprocess中返回0。 为什么0在subprocess中返回? 有什么特别的原因呢? 更新我被告知在父进程和subprocess之间使用链表,父进程知道subprocess的PID,但是如果没有孙子,那么subprocess就会得到0.我不知道是否正确?

使用process_vm_readv从另一个进程修改整数值

我正在使用Ubuntu Linux编写两个程序。 我正在尝试从另一个进程更改整数的值。 我的第一个过程(一)是一个简单的程序,永远循环,并显示在屏幕上的值。 这个程序按预期工作,只是在屏幕上显示值-1430532899(0xAABBCCDD)。 #include <stdio.h> int main() { //The needle that I am looking for to change from another process int x = 0xAABBCCDD; //Loop forever printing out the value of x int counter = 0; while(1==1) { while(counter<100000000) { counter++; } counter = 0; printf("%d",x); fflush(stdout); } return 0; } 在单独的terminal中,我使用ps -e命令列出进程并logging进程(A)的进程标识。 […]