POSIXの引数は次のwrite()
とおりです。
#include <unistd.h>
ssize_t write(int fildes, const void *buf, size_t nbyte);
それは:
アドレスとサイズの代わりに2つのサイズを渡しました。
使用する:
rtn = write(data, PATHA, sizeof(PATHA)-1);
また:
rtn = write(data, PATHA, strlen(PATHA));
文字列のサイズをとして記述しようとしている場合は、次のように、に渡す変数int
が必要です。int
write()
int len = strlen(PATHA);
rtn = write(data, &len, sizeof(len));
;size_t
を記述したい場合を除いて、変数を使用することはできないことに注意してください。size_t
特に64ビットUnixシステムではsizeof(size_t) != sizeof(int)
、一般的に、書き込むサイズを決定する必要があります。
また、一部のシステムはリトルエンディアンであり、他のシステムはビッグエンディアンであり、一方のタイプでこのメカニズムを使用して記述したものは、もう一方のタイプでは読み取れないことに注意する必要があります(I / Oの前後に行われるマッピング作業なし)。オペレーション)。これを問題として無視するか、ポータブル形式(通常は「ネットワーク順序」と呼ばれ、ビッグエンディアンと同等)を使用するか、コードで反対の形式を使用するように定義するかを選択できます。注文。注意すれば、すべてのプラットフォームで同じロジックが使用されるようにコードを書くことができます(そして、すべてのプラットフォームが同じ答えを得る)。