草庐IT

c - 如何在 C 中获取 Linux 中进程的 PID

我需要使用killAPI终止进程。为此,我需要进程的进程ID。我尝试使用:ret=system("pidof-sraj-srv");但它没有返回正确的值。我不想用这个终止进程:ret=system("pkillraj");是否有任何API可用于获取进程ID? 最佳答案 您正在获取系统的返回状态。那不是pid。你想要这样的东西:charline[LEN];FILE*cmd=popen("pidof...","r");fgets(line,LEN,cmd);pid_tpid=strtoul(line,NULL,10);pclose(cm

linux - 如何理解 "/proc/[pid]/stack"?

根据proc手册:/proc/[pid]/stack(sinceLinux2.6.29)Thisfileprovidesasymbolictraceofthefunctioncallsinthisprocess'skernelstack.ThisfileisprovidedonlyifthekernelwasbuiltwiththeCONFIG_STACKTRACEconfigurationoption.所以我写了一个程序来测试:#include#include#include#includevoid*thread_func(void*p_arg){pid_tpid=fork();if

linux - unshare --pid/bin/bash - fork 无法分配内存

我正在试验linux命名空间。特别是pid命名空间。我想我会用bash测试一些东西,但遇到了这个问题:unshare-p/bin/bashbash:fork:Cannotallocatememory从那里运行ls得到一个核心转储。退出是唯一可能的。为什么要这样做? 最佳答案 该错误是由于PID1进程退出到新命名空间导致的。bash开始运行后,bash会fork几个新的子进程来做一些事情。如果您在不带-f的情况下运行unshare,bash将具有与当前“unshare”进程相同的pid。当前“unshare”进程调用unshare系统

c++ - 如何从 pthread 获取 pid

在RHLinux中,每个pthread都映射到一个pid,可以在htop等工具中对其进行监控。但是我怎样才能得到一个线程的pid?getpid()只返回主线程的pid。 最佳答案 有两个线程值容易混淆。pthread_self()将返回POSIX线程ID;gettid()将返回操作系统线程ID。后者是特定于Linux的,不能保证可移植,但可能是您真正需要的。编辑正如PlasmaHH指出的那样,gettid()是通过syscall()调用的。来自syscall()手册页:#define_GNU_SOURCE#include#inclu

linux - 为以用户身份运行的守护进程存储 pid 文件

对于以用户身份运行的守护进程,是否有一个首选的位置来存储pid文件?/var/run是标准位置,但这是针对用户守护程序的,因此它在那里没有写权限。大概我的守护进程将从.profile或.bashrc或其他东西启动。将它保存到/tmp是个坏主意吗? 最佳答案 如果它是为用户运行的,让我们看看存在哪种特定于用户的存储。嗯。就是这样!主目录。我知道它最终会出现在我身边:-)对不起,轻刺。说真的,我只是将PID存储到$HOME/.daemon.pid或~/.daemon.pid(当然,你如何命名文件取决于你).当然,这是假设您仅为一位用户运

linux - 通过进程名称而不是 PID 杀死一个 java 进程(在 linux 中)

在配置/安装Hadoop集群时,我们经常需要终止Java进程/守护进程。我们看到使用jps命令运行的Java进程/守护进程。通常我们用它的PID杀死一个Java进程。例如kill-9112224输入PID有点困难。有没有办法通过它的名字杀死进程?在一个命令中? 最佳答案 这是杀死Java进程的命令,它是进程名称而不是进程ID。kill-9`jps|grep"DataNode"|cut-d""-f1`让我解释一下这个命令的好处。假设您正在使用Hadoop集群。它通常需要您检查使用jps命令运行的java守护进程。假设当您在工作节点上发

c - 编写 Linux 内核模块时获取用户进程 pid

如何获取触发我的内核模块的file_operation.read例程(即哪个进程正在读取/dev/mydev)的用户进程的PID? 最佳答案 当您的读取函数正在执行时,它是在发出系统调用的进程的上下文中执行的。因此,您应该能够使用current,即current->pid。 关于c-编写Linux内核模块时获取用户进程pid,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1191

linux - Bash 脚本,通过从 PID 文件中提取来终止进程

这是我现在在bash脚本中的内容:psaux|grepglassfish|grepdomain1|gawk'{print$2}'|xargskill-9问题在于,如果其他人登录并拉取与glassfish相关的内容,它也会拉取该PID。从而导致杀死错误的PID。所以我的问题是如何修复我必须只提取正确的PID,以及如何重写它以从glassfish生成的PID文件中提取PID。 最佳答案 编辑启动glassfish的脚本并放置类似echo$$>/path/to/PID-file的内容(这可以包含用于主目录或其他一些的~像$USER这样的机

java - 如何在 Java 或 Linux 上的 JRuby 中找到我的 PID?

我需要在Linux平台上找到当前运行进程的PID(它可以是系统相关的解决方案)。Java不支持获取进程ID,目前JRuby的Ruby方法Process.pid存在一个错误。还有其他方法获取PID吗? 最佳答案 如果你有procfs安装后,你可以通过/proc/self符号链接(symboliclink)找到进程ID,它指向一个名为pid的目录(这里也有包含其他相关信息的文件,包括PID,但这个目录就是你所需要的例)。因此,使用Java,您可以:Stringpid=newFile("/proc/self").getCanonicalF

linux - 如何解析/proc/pid/cmdline

我正在尝试在Linux上拆分进程的命令行,但似乎我不能依赖它由'\0'字符分隔。你知道为什么有时'\0'字符用作分隔符,有时它是一个常规空格吗?您知道检索可执行文件名称及其路径的其他方法吗?我一直在尝试使用“ps”获取此信息,但它总是返回完整的命令行并且可执行文件名称被截断。谢谢。 最佳答案 使用字符串$cat/proc/self/cmdline|strings-1cat/proc/self/cmdline 关于linux-如何解析/proc/pid/cmdline,我们在StackOv