簡體   English   中英

如何將pid_t轉換為字符串

[英]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_tlong就是安全的。

我看到幾個引用提到轉換為long,然后使用sprintf的%ld格式說明符: sprintf(str + strlen(str), "%ld", (long) getpid());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM