0

私は次のコードを持っています:

...
printf("Started %d", pid);
FILE * fh;
fh = fopen("run/source.pid", "wb");
fwrite(&pid, sizeof(int), 1, fh);
fclose(fh);

ただし、書き込まれたpidファイルは整数ではなく専門用語を書き込みます。pid_tは単なるでしたが、2番目の引数に対しても同じような問題が発生しますintsizeof(pid_t)

何か案は?よろしくお願いします。

ありがとう

4

1 に答える 1

1

質問の意味がよくわかりません (文脈が少なすぎる) のですが、テキスト エディターやターミナルなどでファイルを表示していることが問題である可能性があります。

fwrite() は生データを書き込みます。たとえば、12 という pid 番号があり、fwrite を使用して次のようにその番号を書き込むとします。

fwrite(&pid, sizeof(int), 1, file);

fwrite() は、32 ビット整数を file に書き込みますfile。つまり、プロセッサの種類に応じて、次のようなバイト シーケンスが書き込まれます。00 00 00 12

でも

fprintf() は : (プラットフォームに依存しない ASCII 文字) のバイト シーケンスを書き込み、49 50すべての端末またはテキスト エディターで表示されます。

お役に立てれば。

于 2012-10-26T22:27:58.497 に答える