草庐IT

proc_pid_cmdline

全部标签

c - 新线程的pid

我有一个关于pthread_create()创建的新线程的快速问题:当我打印主线程和子线程的pid(从getpid()获取)时,它们是相同的,而当我使用htoplinux实用程序显示pid时,它们是不同的。谁能给我解释一下??谢谢!!kai@kai-T420s:~/LPI$./pthr_create--------------------------------------mainthread:pid:4845,ppid:3335childthread:pid:4845,ppid:3335htop显示: 最佳答案 Linux将pth

c - Linux C : upon receiving a signal, 是否可以知道发送者的PID?

假设我的C程序处理SIGUSR1。当它收到这个信号时,是否可以知道是谁发送的?即,如何获取发送进程的pid? 最佳答案 是的,如果您使用sigaction()调用以设置信号处理程序而不是signal。这样做可以让您设置一个采用三个参数的信号处理程序:一个int,用于信号编号(就像signal)Asiginfo_t*,这是一个包含有关信号源的各种信息的结构,如果适用,还包括发送者的pid。(对于像SIGSEGV这样的自动信号,它还包括一些关于信号原因的信息。)Aucontext_t*,它与获得信号的线程有关。大部分都可以忽略。

c - Linux C : upon receiving a signal, 是否可以知道发送者的PID?

假设我的C程序处理SIGUSR1。当它收到这个信号时,是否可以知道是谁发送的?即,如何获取发送进程的pid? 最佳答案 是的,如果您使用sigaction()调用以设置信号处理程序而不是signal。这样做可以让您设置一个采用三个参数的信号处理程序:一个int,用于信号编号(就像signal)Asiginfo_t*,这是一个包含有关信号源的各种信息的结构,如果适用,还包括发送者的pid。(对于像SIGSEGV这样的自动信号,它还包括一些关于信号原因的信息。)Aucontext_t*,它与获得信号的线程有关。大部分都可以忽略。

c - 有没有比解析/proc/self/maps 更好的方法来找出内存保护?

在Linux(或Solaris)上,有比手动解析/proc/self/maps更好的方法来确定您是否可以读取、写入或执行存储在一个或内存中有更多地址?例如,在Windows中您有VirtualQuery。在Linux中,我可以mprotect来更改这些值,但我无法读回它们。此外,除了做一些非常具有侵入性的事情和使用ptrace之外,还有什么方法可以知道这些权限何时更改(例如,当有人在我背后对文件使用mmap时)>在进程中的所有线程上拦截任何可能影响内存映射的系统调用尝试?更新:不幸的是,我在一个JIT内部使用它,它几乎没有关于它正在执行的代码的信息来获得常数的近似值。是的,我意识到我可

c - 有没有比解析/proc/self/maps 更好的方法来找出内存保护?

在Linux(或Solaris)上,有比手动解析/proc/self/maps更好的方法来确定您是否可以读取、写入或执行存储在一个或内存中有更多地址?例如,在Windows中您有VirtualQuery。在Linux中,我可以mprotect来更改这些值,但我无法读回它们。此外,除了做一些非常具有侵入性的事情和使用ptrace之外,还有什么方法可以知道这些权限何时更改(例如,当有人在我背后对文件使用mmap时)>在进程中的所有线程上拦截任何可能影响内存映射的系统调用尝试?更新:不幸的是,我在一个JIT内部使用它,它几乎没有关于它正在执行的代码的信息来获得常数的近似值。是的,我意识到我可

c - 如何通过C中的PID监视外部进程的事件?

是否有任何具有某些功能的库,允许其pid_t监视外部进程的事件?我的意思是,监视外部进程是否已退出,或者是否已创建一个或多个子进程(使用fork),或者是否已变成另一个可执行镜像(通过exec或posix_spawn函数族调用),或者是否检测到Unix信号。交付给它。编辑我需要一些不会干扰正在监视的程序的执行的东西。因此,我不应该使用ptrace,因为它会在发出某种信号时停止正在监视的进程,并且有必要在发生这种情况时恢复该进程。 最佳答案 使用捕获fork()的预加载库运行目标二进制文件。只要所有子进程也都使用预加载库,无论执行如何

c - 如何通过C中的PID监视外部进程的事件?

是否有任何具有某些功能的库,允许其pid_t监视外部进程的事件?我的意思是,监视外部进程是否已退出,或者是否已创建一个或多个子进程(使用fork),或者是否已变成另一个可执行镜像(通过exec或posix_spawn函数族调用),或者是否检测到Unix信号。交付给它。编辑我需要一些不会干扰正在监视的程序的执行的东西。因此,我不应该使用ptrace,因为它会在发出某种信号时停止正在监视的进程,并且有必要在发生这种情况时恢复该进程。 最佳答案 使用捕获fork()的预加载库运行目标二进制文件。只要所有子进程也都使用预加载库,无论执行如何

linux - 来自/proc 的可能的内部套接字状态列表

我想知道/proc/net/tcp中st列的可能值。我认为st列等同于netstat(8)或ss(8)中的STATE列。我已经设法识别了三个代码:sllocal_addressrem_addresssttx_queuerx_queuetrtm->whenretrnsmtuidtimeoutinode0:0100007F:08A000000000:00000A00000000:0000000000:00000000000000000073211ffff81002f4499803000002-11:00000000:006F00000000:00000A00000000:000000000

linux - 来自/proc 的可能的内部套接字状态列表

我想知道/proc/net/tcp中st列的可能值。我认为st列等同于netstat(8)或ss(8)中的STATE列。我已经设法识别了三个代码:sllocal_addressrem_addresssttx_queuerx_queuetrtm->whenretrnsmtuidtimeoutinode0:0100007F:08A000000000:00000A00000000:0000000000:00000000000000000073211ffff81002f4499803000002-11:00000000:006F00000000:00000A00000000:000000000

linux - 如何从 shell 脚本中的 fork 子进程获取 PID

我相信我可以从一个父进程派生出10个子进程。下面是我的代码:#/bin/shfpfunction(){n=1while(($n但是,如何从我刚创建的每个子进程中获取pid? 最佳答案 后台子进程的PID存放在$!中,当前进程为$$:fpfunction&child_pid=$!#inparentprocess,child'spidis$!parent_pid=$$#inparentprocess,parent'spidis$$在后台函数中,子进程的PID是$BASHPID而不是$$,后者现在是父进程的PID:fpfunction()