golang fork 系统资源共享可行性验证

golang fork 系统资源共享可行性验证,第1张

概述环境:linux gcc go gdb 如左边代码: go buildtest.go ./test s ./test c ./test c 可见2个.dat 日志文件都有输出,说明2个父子进程都有accept 成功,进一步说明fork 在golang里面可用,也验证了 *** 作系统的父子进程资源可共享 package main   import (     "fmt"     "io"     "net

环境:linux gcc go gdb

如左边代码:

go buildtest.go

./test s

./test c

./test c

可见2.dat 日志文件都有输出,说明2个父子进程都有accept 成功,进一步说明fork golang里面可用,也验证了 *** 作系统的父子进程资源可共享


package main

import (

"fmt"

"io"

"net"

"os"

)

/*

#include <unistd.h>

int Myfork()

{

pID_t p = fork();

return p;

}

*/

import "C"

func handlerCli(cli net.Conn){

for {

buf := make([]byte, 128)

l,err := cli.Read(buf)

if err != nil {

fmt.Println("cli.Readerr")

} else {

buf = buf[:l]

ret,e := cli.Write(buf)

if e != nil || ret != l {

fmt.Println("cli.Writeerr")

}

}

}

}

func main() {

var pID C.int = C.Myfork()

if pID != 0 {

os.Exit(0)

}

if os.Args[1] == "s" {

serv,serr := net.Listen("tcp4","127.0.0.1:8082")

if serr != nil {

fmt.Println("Listenerr")

}

if true {

C.Myfork()

}

fW,_ := os.Openfile(fmt.Sprintf("%d.dat",os.GetpID()),os.O_APPEND|os.O_CREATE|os.O_RDWR,0666)

defer fW.Close()

var clinum int64 = 0

for {

cli,cerr := serv.Accept()

if cerr != nil {

fmt.Println("accepterr")

io.WriteString(fW,"accept err")

continue

}

go handlerCli(cli)

clinum++

//if clinum%100 == 0 {

//fmt.Println(os.GetpID(),":",clinum)

io.WriteString(fW,fmt.Sprintf("%d",clinum))

//}

}

} else {

cli,err := net.Dial("tcp4","127.0.0.1:8082")

if err != nil {

fmt.Print(err)

return

}

buf := make([]byte, 3)

buf[0]= 'a'

buf[1]= 'b'

buf[2]= 'c'

for {

ret,ew := cli.Write(buf)

if ew != nil {

fmt.Println(ew)

continue

}

if ret != 3 {

fmt.Println("writeless 3")

}

red,errr := cli.Read(buf)

if red != 3 {

fmt.Println("readless 3")

}

if errr != nil {

fmt.Println(errr)

}

}

}

return

}

总结

以上是内存溢出为你收集整理的golang fork 系统资源共享可行性验证全部内容,希望文章能够帮你解决golang fork 系统资源共享可行性验证所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1281345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存