相关疑难解决方法(0)

如何在Linux中告诉哪个进程向我的进程发送了一个信号

我有一个java应用程序SIG TERM.我想知道发送此信号的进程的pid.
那可能吗?

linux signals

27
推荐指数
2
解决办法
2万
查看次数

在父线程出口而不是父进程出口上调用prctl(PR_SET_PDEATHSIG,SIGNAL)

我有一个分支到子进程的进程。如果父进程存在,则子进程不应存在。因此,如果父进程死亡,我在子进程中调用:: prctl(PR_SET_PDEATHSIG,SIGKILL)杀死它。最终发生的是父线程调用pthread_exit,该线程最终成为杀死子进程的催化剂。

这是我的代码:

parent.cpp:

#include <sys/prctl.h>
#include <signal.h>
#include <unistd.h>
#include <pthread.h>
#include <iostream>

void* run(void* ptr) {

    std::cout << "thread:" << getpid() << ":" << std::hex << pthread_self() << ":" << std::dec << getppid() << std::endl;
    auto pid = fork();
    if ( pid != 0 ) {
        sleep(1);
    }
    else {
        char* arg = NULL;
        execv("./child", &arg);
    }
    return NULL;
}

int main() {

    std::cout << "main:" << getpid() << ":" << std::hex << pthread_self() << ":" << std::dec …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading fork execv

5
推荐指数
1
解决办法
7257
查看次数

标签 统计

c++ ×1

execv ×1

fork ×1

linux ×1

multithreading ×1

signals ×1