サイズバイトでありますシステムに依存し、単に次のように照会する必要があります:
unsigned int pidLength = sizeof(pid_t);
編集:あなたはprintf("%d", myPID);
のように長さ10進数表現心配している場合は、私はあまりにも、それを照会示唆しています。例えば、snprintf
関数は、十分なスペースがあれば、書き込んだ文字数(ヌル終了なし)を返します。
char tmpChar;
int representationLength = snprintf(&tmpChar, 1, "%d", myPID);
if (representationLength == -1) { handle_error(); }
char *finalString = malloc(representationLength + 1);
snprintf(finalString, representationLength + 1, "%d", myPID);
はたぶんsnprintf(NULL, 0, "%d", myPID)
が同様の長さを照会するために働くだろうが、Linux snprintf
manページは、この意見::だからあなたは行うことができます
が戻りのsnprintf()の値、はSUSv2とC99に関して互いに矛盾:のsnprintf()のサイズ= 0で呼び出されたときC99はstrが、この場合にNULLにすることができる、及び(いつものように)戻り値を与えながらSUSv2には、1未満の不特定の戻り値を規定文字数として出力文字列が十分に大きくなった場合に備えて書かれているはずです。
* "8 long" * - 8 * what * long?小数点のPID値を表す文字列の長さについて話していますか(たとえば、8374は4桁です)?また、PIDが符号付きintであると仮定しないでください。これは 'pid_t'です。これは' signed int'のtypedefかもしれません。そこ –
こんにちは、うん...私は彼が文字列にPIDを変換した場合、彼は最大の長さを望んでいる...「別のchar *値との連結としてPID」PID ...のthnx –