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返回給父程序的原因是沒有函式...