c – 2个程序之间的信号

c – 2个程序之间的信号,第1张

概述如果一个程序向第二个程序发送信号,第二个程序可以通过它发送的信号找出第一个程序的pid是什么吗? 第一个程序:(代码不完整,信号是主要焦点) #include<stdio.h>#include<stdlib.h>#include<signal.h>#include<unistd.h>#include<time.h>void my_handler(int);int main(int 如果一个程序向第二个程序发送信号,第二个程序可以通过它发送的信号找出第一个程序的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_t的si_pID成员访问发送方的PID,但您需要使用sigaction和SA_SIGINFO标志来定义处理程序.

非POSIX系统(例如windows)甚至可能不具有信号的概念(至少不具有POSIX意义),因此这些都不适用.

总结

以上是内存溢出为你收集整理的c – 2个程序之间的信号全部内容,希望文章能够帮你解决c – 2个程序之间的信号所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1226478.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存