c - 使用从 argv 传递的 pid

标签 c pid

目前,我有一个文件调用另一个文件,作为参数,它传递了一个转换为字符串的 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/

相关文章:

C头文件和源文件混淆

guid - Windows 中的 PID 分配策略/使用 PID 命名临时文件

用于检查进程是否正在运行并在没有运行时重新启动的 Linux 脚本

c - 使用 scanf 读取字符串然后读取整数,只读取字符串

c - Fork 和 execlp 不执行我的程序?

c++ - 如何在 C++ 中获取使用 system() 命令执行的进程的 pid

c - 在 Linux 中,如何在新获取的子进程退出之前了解它们?

c - 带减法的整数溢出

c++ - Bison 错误

c++ - 我如何读取小型转储?