unix domain IPC 程序間通訊簡析

2021-09-09 00:25:34 字數 1860 閱讀 8704

linux系統有多種程序間通訊方式,如訊號、訊息佇列、管道等,socket是其中一種,socket使用unix domain 模式進行程序間通訊

//服務端**

#include

#include

#include

#include

#include

#define unix_serv "/tmp/unix_serv"   //檔案路徑名

int main(void)

unlink(unix_serv); //若檔案 存在,則刪除

memset(&serv, 0, sizeof(serv));

serv.sun_family = af_unix;  //unix

strncpy(serv.sun_path, unix_serv, sizeof(serv.sun_path)-1);  //拷貝檔名

serv_len = sizeof(serv);

ret = bind(sock_fd, (struct sockaddr *)&serv, serv_len); //伺服器需要繫結

if(ret == -1)

int recv_size;

char buf[1024];

socklen_t cli_len;

memset(&cli, 0, sizeof(cli));

cli_len = sizeof(cli);

while(1)

buf[recv_size-1] = '\0';

printf("recv buf:%s from client\n", buf);}}

close(sock_fd);

unlink(unix_serv);

return 0; }

//客戶端**

#include

#include

#include

#include

#include

#define unix_serv "/tmp/unix_serv"  //服務端檔名

//注:客戶端**可以不繫結位址,如不繫結,則不需要客戶端檔名;繫結客戶端會生成客戶端檔案

#define unix_cli "/tmp/unix_cli"          //客戶端檔名

int main(void)

unlink(unix_cli);

memset(&cli, 0, sizeof(cli));

memset(&serv, 0, sizeof(serv));

cli_len = sizeof(cli);

cli.sun_family = af_unix;

strncpy(cli.sun_path, unix_cli, sizeof(cli.sun_path)-1);

serv_len = sizeof(serv);

serv.sun_family = af_unix;

strncpy(serv.sun_path, unix_serv, sizeof(serv.sun_path)-1);

ret = bind(sock_fd, (struct sockaddr *)&cli, cli_len);

if(ret == -1)

int read_size;

int send_size;

char buf[1024];

while(1)

buf[read_size-1] = '\0';

printf("send buf: %s\n", buf);}}

}close(sock_fd);

unlink(unix_cli);

return 0;

}

程序特例 殭屍程序 孤兒程序 守護程序

殭屍程序 子程序結束,父程序尚未呼叫wait 子程序資源,子程序的pcb還殘留在核心,造成資源的浪費 孤兒程序 父程序先於子程序結束,子程序成為孤兒程序,子程序修改pcb使其父程序為init程序,孤兒程序結束後,由init程序負責 其pcb資源 守護程序 daemon process 是linux中...

程序 程序組

1.程序組 1 程序組,也稱之為作業,bsd與1980年前後向unix中增加的乙個新特性,代表乙個或多個程序的集合。每個程序都屬於乙個程序組,在waitpid函式和kill函式的引數中都曾經使用到,作業系統設計的程序組的概念,是為了簡化對多個程序的管理。當父程序建立子程序的時候,預設子程序與父程序屬...

程序建立,程序等待,程序終止

1 程序建立,2 程序等待,3 程序終止 程序建立被定義為通過父程序建立子程序的過程。fork函式 函式原型 pid t fork void 特點 1.fork函式呼叫一次,返回兩次兩次返回值得區別分別是子程序當中的返回值為0,父程序當中的返回值為新建子程序的id 將id返回給父程序的原因是沒有函式...