1. 程式人生 > >python之父子程序間通訊

python之父子程序間通訊

當進行fork的時候,父父程序的資訊會複製到子程序,這本身已經是一種通訊方式了,即子程序複製父程序資源,除此之外,還想讓這兩個程序進行通訊,有什麼方法呢?可以使用socketpair的方式。

我的疑惑是socketpair返回的描述符有沒有服務端與客戶端的區別?

# -*- coding:utf-8 -*-
import socket
import os
import time


parent, child = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM)
# fork的一剎那父子是相同的
pid = os.fork()


if 
pid: # in parent child.close() parent.sendall('hello, i am parent') response = parent.recv(1024) print "i am in parent ", os.getpid() print response time.sleep(0.1) parent.close() # print parent.fileno() else: # child process parent.close() print "i am in child "
, os.getpid() child.sendall('hello, i am child') message = child.recv(1024) print message time.sleep(0.1) child.close()

一個基於udp的server,結合nc使用,可以構建一個簡單的shell

# -*- coding:utf-8 -*-
import socket
import sys
import commands
import os


# 最原始的基於udp協議的shell
server_address = ('localhost'
, 8000) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind(server_address) while True: data, client = sock.recvfrom(1024) if "quit" not in data: if data.strip(): # 假如這裡的data是從web來的,那麼這樣我就實現了一個基於python的webshell,目前這個shell還不能處理互動式 sock.sendto(commands.getoutput(data.strip()) + os.linesep, client) else: pass else: break sys.exit()

相關推薦

python父子程序通訊

當進行fork的時候,父父程序的資訊會複製到子程序,這本身已經是一種通訊方式了,即子程序複製父程序資源,除此之外,還想讓這兩個程序進行通訊,有什麼方法呢?可以使用socketpair的方式。 我的疑惑是socketpair返回的描述符有沒有服務端與客戶端的區別? # -

Python-互斥鎖 程序通訊

1.守護程序 ** 如果父程序將子程序設定為守護程序,那麼在主程序程式碼執行完畢後守護程序就立即被回收 (a守護b b如果死了 a也就跟著死了) 在主程序的物件後加入obj.daemon = True2.互斥鎖 ****** # 鎖本質上就是一個bool型別的識別符號 大家(多

Vue父子元件通訊例項講解(props、$ref、$emit)

元件是 vue.js 最強大的功能之一,而元件例項的作用域是相互獨立的,這就意味著不同元件之間的資料無法相互引用。那麼元件間如何通訊,也就成為了vue中重點知識了。這篇文章將會通過props、$ref和 $emit 這幾個知識點,來講解如何實現父子元件間通訊。   在說如何實現通訊

Python socket 實現程序通訊

基本用法 Python socket 使用方法如下 socket = socket.socket(family, type[, protocal]) family代表地址家族,一般為AF_UN

Linux的程序程式設計-二-程序通訊(訊息佇列)

1.1         系統V訊息佇列 訊息佇列中的每個訊息都有如下的資料結構: struct msgbuf { long mtype;         // 訊息型別 char mtext[n];      // 訊息內容,n由使用者自己定義 }; 1.1.1      

python socket程序通訊

最近用到python的socket實現程序間通訊,發現網上的資料很零散,例子極少。寫了一個example: Server: if __name__ == '__main__': import socket sock = socket.socket

Linuxc 程序通訊匿名管道1 父子通訊

利用匿名管道實現父子程序間通訊,要求1.父程序傳送字串“hello child”給子程序;2.子程序收到父程序傳送的資料後,給父程序回覆“hello farther”;3.父子程序通訊完畢,父程序依次列印子程序的退出狀態以及子程序的pid。原始碼:#include <u

Python 小白的系統程序的理解程序通訊

程序間通訊-QueueProcess之間有時需要通訊,作業系統提供了很多機制來實現程序間的通訊。1. Queue的使⽤可以使⽤multiprocessing模組的Queue實現多程序之間的資料傳遞,Queue本身是⼀個訊息列隊程式,⾸先⽤⼀個⼩例項來演示⼀下Queue的⼯作原

Python程序通訊命名管道

管道是一種簡單的FIFO通訊通道,它是單向通訊的。 通常啟動程序建立一個管道,然後這個程序建立一個或者多個程序子程序接受管道資訊,由於管道是單向通訊,所以經常需要建立兩個管道來實現雙向通訊。 命名管道是對傳統管道的擴充套件,預設的管道是匿名管道,只在程式執行時

Python程序通訊命名管道(Windows)

前面文章說了一下 Linux 命名管道的實現,今天看看 Windows 上我們怎麼實現。 在 Windows 上的命名管道主要是通過呼叫 win32 api 的以下方法來實現的: - win32pipe.CreateNamedPipe() - win32p

python中進程通訊——文件鎖fcntl模塊的使用

too clas tool python except sleep bject ati tle python 中給文件加鎖——fcntl模塊import fcntl打開一個文件##當前目錄下test文件要先存在,如果不存在會報錯。或者以寫的方式打開f = open(‘./

Linux:程序通訊管道通訊詳解

        在學習程序的時候,我們瞭解到了程序的獨立性:程序之間是相互獨立的,每個程序有自己的虛擬地址空間,並且虛擬地址空間通過頁表的對映,對映到屬於自己的實體記憶體上。並且各個程序之間互相不影響,執行自己的程式碼。    

linux 程序通訊FIFO

1.概述 FIFO與管道幾乎類似,所以FIFO也是一個位元組流,從FIFO讀取的順序也是與被寫入FIFO的順序一致,容量是也有限的,也是可以確保寫入不超過PIPE_BUF位元組的操作是原子的,FIFO的本質也是一個管道,但傳遞方向是可以雙向的,它們兩者之間的最大差別在於FIFO在檔案系統中擁有一個名稱,並且

程序通訊Linux C管道程式設計

管道簡述 管道(pipe)是Unix/Linux中最常見的程序間通訊方式之一,它在兩個程序之間實現一個數據流通的通道,資料以一種資料流的方式在程序間流動。在系統中,管道相當於檔案系統上的一個檔案,用於快取所要傳輸的資料。在某些特性上又不同於檔案,例如當資料讀出後,管道中就沒有資料了,但檔案沒

python 64式: 第15式、多程序,訊號量與程序通訊

#!/usr/bin/env python # -*- coding: utf-8 -*- import multiprocessing import time ''' 關鍵 1 訊號量 multiprocessing.Semaphore(n): n表示資源總數 作用: 控制對共享資源的訪問數量

程序通訊管道--pipe和fifo使用

匿名管道pipe 函式原型: #include <unistd.h> int pipe(int fildes[2]); 引數說明 fildes是我們傳入的陣列,也是一個傳出引數。fildes[0]是讀端,fildes[1]是寫端。 返回值 成功呼叫返回0。 失敗呼叫返回-1且

C++ MFC程序通訊剪貼簿【詳解】

Windows剪貼簿是一種比較簡單的程序間通訊機制,同時它的開銷相對較小。它的實現原理很簡單,其實就是由由作業系統維護的一塊記憶體區域, 這塊記憶體區域不屬於任何單獨的程序,但是每一個程序又都可以訪問這塊記憶體區域,當一個程序將資料放到該記憶體區域中,而另一個

php高階應用程序控制及程序通訊

很少有用php寫服務的,然而有些場景又要求能有一個這樣的伺服器程式,它能夠與php無縫結合,並且提供高可靠靠效能的服務,並且提供現有架構所沒有的一些高階特性,例如支援自定義協議,支援長連線等等。PPM(PHP-Process-Manager)是我用PHP開發的一款程序管理

程序通訊共享記憶體

一、共享記憶體的定義和原理 1、共享記憶體的定義   顧名思義,共享記憶體就是允許兩個不相關的程序訪問同一個邏輯記憶體。共享記憶體是在兩個正在執行的程序之間共享和傳遞資料的一種非常有效的方式。不同程序之

【Linux】Linux程序通訊訊息佇列

1、訊息佇列概念引入    訊息佇列提供了一個從一個程序向另外一個程序傳送一塊資料的方法每個資料塊都被認為是有一個型別,接收者程序接收的資料塊可以有不同的型別值訊息佇列也有管道一樣的不足,就是每個訊息的最大長度是有上限的(MSG