目前,我有一个文件调用另一个文件,并作为参数传递一个转换为字符串的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函数中。
我哪里错了?
答案 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);