[英]How to convert pid_t to string
所以,我需要strcat pid到一些字符串。 我有這個
strcat (str,(char*)getpid());
但這不起作用。
- - 編輯 - -
好的,我理解downvotes。 我太快發表了一個問題。 並沒有意識到pid返回一個int,我不能將一個int轉換為char *
itoa不起作用,因為它不是標准的。
這就是我做到的。
char pid[10];
snprintf(pid, 10,"%d",(int)getpid());
strcat (str, pid);
而不是使用strcat
來構建字符串,而是考慮使用更靈活(更有效!)的sprintf
/ snprintf
函數:
char *end = str;
end += sprintf(end, "%s ", "hello!");
end += sprintf(end, "%ld", (long)getpid());
if(bar)
end += sprintf(end, "%x", 0xf00d);
觀察到sprintf
返回寫入的字符數,因此您可以構建一個字符串而不會屈服於Schlemiel the Painter的算法 。 如果你想確保你沒有超出固定大小的緩沖區, snprintf
會為你做這個( strcat
只會盲目地連接,並且沒有標准的方法可以避免這種情況)。
請注意, pid_t
標准保證存在“一個或多個編程環境,其中pid_t
...的[width]不大於long
類型的寬度”。 因此,只要getconf
這樣說,將pid_t
為long
就是安全的。
我看到幾個引用提到轉換為long,然后使用sprintf的%ld
格式說明符: sprintf(str + strlen(str), "%ld", (long) getpid());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.