gpt4 book ai didi

c - 两个程序之间的信号

转载 作者:太空狗 更新时间:2023-10-29 15:41:02 24 4
gpt4 key购买 nike

如果一个程序向第二个程序发送一个信号,第二个程序是否可以仅仅通过它发送的信号就知道第一个程序的pid是什么?

第一个程序:(代码不完整,主要关注信号)

#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
#include<time.h>

void my_handler(int);


int main(int argc, char *argv[]){


FILE *fp;
fp=fopen(argv[1], "w");

kill(atol(argv[2]),SIGUSR1);
}

第二个程序:

#include<stdio.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
#include<time.h>

void my_handler(int signum){
if (signum == SIGUSR1)
{
printf("Received SIGUSR1!\n");
}
}

int main(int argc, char *argv[]){
int pid;
pid=getpid();
printf("PID: %d\n", pid);

signal(SIGUSR1, my_handler);

pause();
}

有办法吗?或者我应该以某种方式将第一个程序的 pid 放在 SIGUSR1 中,第二个程序可以找出 pid?

最佳答案

假设您指的是 POSIX 信号,那么是的。您可以通过 siginfo_tsi_pid 成员访问发送者的 PID ,尽管您需要使用 sigactionSA_SIGINFO 标志来定义您的处理程序。

非 POSIX 系统(例如 Windows)甚至可能没有信号的概念(至少在 POSIX 意义上没有),所以这些都不适用。

关于c - 两个程序之间的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15149899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com