gpt4 book ai didi

将 pid_t 转换为字符串

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:04 32 4
gpt4 key购买 nike

我正在尝试将 pid 转换为字符串。我这样试过:

int pid = getpid(); //this int conversion should be ok as far as I know
char * mypid = (char *)malloc(sizeof(int));
sprintf(mypid, "%d", pid);

我假设我的错误可能是我最后没有添加 NULL。我试图这样做,但仍然收到错误消息。有人可以向我解释什么是将 PID 转换为 char * ("string") 的最佳方法吗?谢谢!!

最佳答案

sizeof(int) 在您的系统上很可能是 4 个字节。包含 PID 的字符串将需要(假设 16 位 PID)至少 6 个字节:5 个用于十进制数字,1 个用于空终止符。因此,您没有分配足够的空间并且可能写入已分配数组的末尾。这会调用 undefined behavior

确保为有问题的字符串分配足够的空间:

int pid = getpid();
char * mypid = malloc(6); // ex. 34567
sprintf(mypid, "%d", pid);

或者使用固定大小的字符串:

int pid = getpid();
char mypid[6]; // ex. 34567
sprintf(mypid, "%d", pid);

如果您的系统支持 32 位 PID,则至少需要 11 个字节。对于 64 位 PID,至少为 21。

关于将 pid_t 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53230155/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com