c - 如何在全局变量中保存进程 ID?

标签 c process

我想将当前进程 ID 保存在变量中。

所以,我这样做:

double id = 0; //Global variable

.....

id = getpid();

printf("%d %d", id, getpid()); // the result ins't the same...

嗯,我希望将当前进程 ID 保存在全局变量中。

编辑:

new_pid = fork();
//new_pid2 = fork();
switch(new_pid) {
case -1:
        perror("fork failed");
        exit(1);
case 0:
        kill(getppid(), SIGUSR1);
        signal(SIGUSR1, trata_SIGSEGV);
        break;
default:
        signal(SIGUSR1, trata_SIGSEGV);
        kill(new_pid, SIGUSR1);
        break;
}
break;

最佳答案

问题是您使用错误的格式打印id。您应该使用 %f:

printf("%f %d", id, getpid());

Correct format specifier for double in printf

或将其转换为int:

printf("%d %d", (int)id, getpid());

更好的主意是在声明 id 时使用正确的类型:

pid_t id;

这是整数类型,而不是浮点类型。

关于c - 如何在全局变量中保存进程 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54119886/

相关文章:

c - 适用于 Mac 的 C IDE 好吗?

c - GStreamer 插件搜索路径?

c - 使用递归反转字符串

linux - pgrep defunct 进程重启服务

控制 c 导致打印垃圾

c - 如何获取文件的创建时间和最后写入时间

linux - 进程的 PSS(Proportional Set Size)数字是否包括内核代码消耗的内存?

java - 读取外部进程错误流严重影响性能

unix - 如何杀死容器内的进程? Docker 顶部命令