0

sockそれが非ブロッキングモードで開かれたUNIXソケットであり、次の機能があると仮定しましょう

void send_int(int sock, int flags) {
    int x = 0xff;
    send(sock, &x, sizeof(int), flags);
}

このコードは「正しい」ですか?x送信が戻る前にバッファ()が送信バッファにコピーされているかどうかはわかりません。またはsendsend_int返されるのが早すぎて、スタック上にのみ存在していたために存在しないバッファが使用される可能性があります...

4

1 に答える 1

1

いいえ、非ブロッキングモードで送信操作が完了するまで、ユーザーの送信バッファーを保持する必要はありません。したがって、コードは問題ありません。

内部的には、送信バッファーはソケットバッファー(SKB)送信キューにコピーされ、カーネルスペースにコピーされます。

参照:

于 2012-09-24T09:38:15.957 に答える