程序之間的通訊 訊號通訊

2021-07-23 23:22:14 字數 2453 閱讀 4991

訊號通訊

方式:

訊號型別:

下面是幾種常見的訊號:

§ sighup: 從終端上發出的結束訊號

§ sigint: 來自鍵盤的中斷訊號(ctrl-c)

§ sigkill:該訊號結束接收訊號的程序,殺死程序

§ sigterm:kill 命令發出的訊號

§ sigchld:子程序停止或結束時通知父程序

§ sigstop:來自鍵盤(ctrl-z)或除錯程式的停止執行訊號,暫停程序

3.kill

函式的作用:傳送訊號給指定的程序

函式的原型:int kill(pid_t pid,int sig)

函式的引數:pid > 0 指定的程序的pid

pid = 0 傳送給目前程序相同組的所有程序

pid = -1 廣播給系統內所有的程序

pid < 0

sig : 訊號

返 回 值:成功 0  出錯 -1

頭 文 件:#include

#include

#include #include #include #include #include int main()

if(pid == 0)

else

else}}

4.raise函式的作用:傳送訊號給自身函式的原型:int raise(int sig)

頭 文 件:#include

#include #include #include #include #include #include #include #include int main()

if(pid == 0)

else

waitpid(pid, null, 0);

exit(0);}}

5.alarm函式的作用:設定訊號傳送鬧鐘

函式的原型:unsigned int alarm(unsigned int seconds)

返 回 值:返回之前鬧鐘的剩餘秒數,如果之前未設鬧鐘則返回0

#include #include #include void handle()

int main()

}

6.pause函式的作用:讓程序暫停,直到訊號的出現函式的原型:int pause(void);返 回 值:-1

頭 文 件:#include

7.signal

函式的作用:設定訊號處理方式

函式的原型:void (* signal(int signum,void(*handler)(int))(int)

typedef void(*sighandler_t)(int)

sighandler_t signal(int signum,sighandler_t handler);

程序之間通訊

之所以開啟子程序 肯定需要他幫我們完成任務,很多情況下,需要將資料返回給父程序。然而程序記憶體是物理隔離的 1.將共享資料放在檔案中,就是慢 2.管道subprocess 中那個管道只能單向通訊,必須有父子關係 3.共享一塊記憶體區域 得作業系統幫你分配,速度快 from multiprocessi...

WPF程序之間通訊

準備 使用copydata,wm user只能用於應用程式內部的通訊,跨程序用copydata public const int wm copydata 0x004a 查詢目標傳送窗體 dllimport user32.dll entrypoint findwindow public static ...

程序之間的通訊方式

1 管道 pipe 管道可用於具有親緣關係程序間的通訊,允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊。2 命名管道 name pipe 命名管道克服了沒有名字的限制,因此,除了具有管道所擁有的功能外,它還允許無親緣關係程序間同通訊。命名管道在檔案系統中有對應的檔名。命名管道通過命令mkfif...