socketpair ialah fungsi yang digunakan untuk mencipta sepasang soket yang disambungkan antara satu sama lain. Ia digunakan secara meluas dalam sistem Unix untuk komunikasi antara proses (IPC) dalam proses yang sama. Prototaip fungsinya ialah "int socketpair(int domain, int type, int protocol, int sv[2]);". Soket yang dicipta oleh fungsi ini boleh merealisasikan komunikasi dua hala antara proses dan boleh digunakan untuk melaksanakan fungsi seperti penghantaran data, penyegerakan dan pemberitahuan antara proses.
socketpair ialah fungsi yang digunakan untuk mencipta sepasang soket yang disambungkan antara satu sama lain. Ia digunakan secara meluas dalam sistem Unix untuk komunikasi antara proses (IPC) dalam proses yang sama. Prototaip fungsi
socketpair adalah seperti berikut:
int socketpair(int domain, int type, int protocol, int sv[2]);
Penerangan parameter:
- domain: menentukan keluarga protokol soket, biasanya AF_UNIX.
- jenis: Menentukan jenis soket, biasanya SOCK_STREAM (soket penstriman) atau SOCK_DGRAM (soket datagram).
- protokol: Menentukan protokol soket, biasanya 0.
- sv: Deskriptor fail yang digunakan untuk menyimpan soket yang dibuat.
Nilai pulangan bagi fungsi pasangan soket ialah 0 untuk kejayaan, dan -1 untuk kegagalan.
Gunakan fungsi pasangan soket untuk mencipta sepasang soket bersambung, yang boleh digunakan untuk komunikasi antara proses. Salah satu soket dalam pasangan digunakan untuk membaca data dan satu lagi digunakan untuk menulis data. Dalam proses yang sama, anda boleh menggunakan pasangan soket ini untuk komunikasi antara proses bagi merealisasikan penghantaran data antara proses.
Berikut ialah contoh menggunakan fungsi pasangan soket untuk komunikasi antara proses:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> int main() { int sv[2]; if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == -1) { perror("socketpair"); exit(1); } pid_t pid = fork(); if (pid == -1) { perror("fork"); exit(1); } else if (pid == 0) { // 子进程 close(sv[0]); // 关闭子进程中的读取套接字 char *message = "Hello from child process!"; if (write(sv[1], message, strlen(message)) == -1) { perror("write"); exit(1); } close(sv[1]); // 关闭子进程中的写入套接字 exit(0); } else { // 父进程 close(sv[1]); // 关闭父进程中的写入套接字 char buffer[1024]; if (read(sv[0], buffer, sizeof(buffer)) == -1) { perror("read"); exit(1); } printf("Message from child process: %s\n", buffer); close(sv[0]); // 关闭父进程中的读取套接字 exit(0); } }
Dalam contoh ini, fungsi pasangan soket mula-mula dipanggil untuk mencipta sepasang soket, dan kemudian proses anak dicipta melalui fungsi garpu. Dalam proses kanak-kanak, soket baca ditutup, dan kemudian fungsi tulis digunakan untuk menulis data ke soket tulis. Dalam proses induk, soket tulis ditutup dan data dibaca dari soket baca menggunakan fungsi baca.
Soket yang dicipta melalui fungsi pasangan soket boleh merealisasikan komunikasi dua hala antara proses, dan boleh digunakan untuk melaksanakan fungsi seperti penghantaran data, penyegerakan dan pemberitahuan antara proses. Dalam aplikasi praktikal, fungsi pasangan soket boleh digunakan untuk komunikasi antara proses mengikut keperluan khusus.
Atas ialah kandungan terperinci Apakah penggunaan pasangan soket?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!