目前,我有一个文件调用另一个文件,作为参数,它传递了一个转换为字符串的 pid。然后,在信号处理程序中,我需要向 pid 给定的进程发送信号。
所以我有:
//initialized as a global variable
pid_t* distantPid;
//in my main function
distantPid = &argv[1];
//then, in my signal handler
kill(*distantPid, WARNING_SIGNAL);
但是,每当我尝试编译它时,我都会收到一条错误消息,提示“从不兼容的指针类型赋值 [默认赋值]”
我不能简单地在信号处理程序中使用 argv[1],因为它不在主函数中。
我哪里错了?
最佳答案
您需要将字符串转换为整数。尝试类似的东西
//initialized as a global variable
pid_t distant_pid;
//in my main function
long long int pid_ll = strtoll(argv[1], NULL, 0);
distant_pid = (pid_t) pid_ll;
//then, in my signal handler
kill(distantPid, WARNING_SIGNAL);
如果这是生产代码,您需要确保 strtoll()
成功;我会把它留给你作为练习……有关如何操作的信息,请参见手册页。
关于c - 使用从 argv 传递的 pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48656108/