使用从argv传递的pid

时间:2018-02-07 04:37:32

标签: 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],因为它不在main函数中。

我哪里错了?

2 个答案:

答案 0 :(得分:2)

您需要将字符串转换为整数。尝试像

这样的东西
//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()成功;我将把它作为练习留给你...请参阅手册页以获取有关如何操作的信息。

答案 1 :(得分:0)

将string转换为int并将其传递给kill命令: kill(atoi(argv [1]),WARNING_SIGNAL);