C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 2个程序之间的信号大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果一个程序向第二个程序发送信号,第二个程序可以通过它发送的信号找出第一个程序的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个程序之间的信号所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。