当前位置: 首页 > news >正文

电子政务 和网站建设总结网站建设得要素

电子政务 和网站建设总结,网站建设得要素,做一钓鱼网站,dream8网站建设及设计本例提供了cgo调用C函数的示例#xff0c;也演示了如何将C函数打印内容保存到golang的变量中 目录和源码 目录结构 adminhpc-1:~/go/my_stdout$ tree . ├── include │ ├── mylibrary.c │ └── mylibrary.h ├── lib └── main.go2 directories, 3 files a… 本例提供了cgo调用C函数的示例也演示了如何将C函数打印内容保存到golang的变量中 目录和源码 目录结构 adminhpc-1:~/go/my_stdout$ tree . ├── include │ ├── mylibrary.c │ └── mylibrary.h ├── lib └── main.go2 directories, 3 files adminhpc-1:~/go/my_stdout$ include目录下放C的源码和头文件 adminhpc-1:~/go/my_stdout$ cat include/mylibrary.c #include stdio.hvoid writeToStdout() {printf(Hello from C!\n); } adminhpc-1:~/go/my_stdout$ adminhpc-1:~/go/my_stdout$ cat include/mylibrary.h #ifndef MYLIBRARY_H #define MYLIBRARY_Hvoid writeToStdout();#endif adminhpc-1:~/go/my_stdout$ golang的源码 adminhpc-1:~/go/my_stdout$ cat main.go package main/* #cgo CFLAGS: -I./include #cgo LDFLAGS: -L${SRCDIR}/lib -lmyprint -Wl,-rpath${SRCDIR}/lib #include mylibrary.h #include stdio.h */ import Cimport (syscallbyteslogfmtioos )func main() {// 克隆 Stdout 到 origStdout.origStdout, err : syscall.Dup(syscall.Stdout)if err ! nil {log.Fatal(err)}// 创建管道reader, writer, err : os.Pipe()if err ! nil {log.Fatal(err)}// 此后stdout将会写到writerif err syscall.Dup2(int(writer.Fd()), syscall.Stdout); err ! nil {log.Fatal(err)}// 启动背景 goroutine 收集输出out : make(chan []byte)go func() {var b bytes.Bufferio.Copy(b, reader)out - b.Bytes()}()// 调用C函数打印C.writeToStdout()// 一些清理工作C.fflush(nil)writer.Close()syscall.Close(syscall.Stdout)// 导出outputrecord : -out// Restore original Stdout.syscall.Dup2(origStdout, syscall.Stdout)syscall.Close(origStdout)fmt.Println(Captured:, string(record)) } adminhpc-1:~/go/my_stdout$ 编译和运行 首先编译出C的lib放到./lib目录下 adminhpc-1:~/go/my_stdout$ gcc -shared -o ./lib/libmyprint.so include/mylibrary.c adminhpc-1:~/go/my_stdout$ adminhpc-1:~/go/my_stdout$ ls -lt ./lib/ total 16 -rwxrwxr-x 1 centec centec 16208 2-р сар 27 07:29 libmyprint.so adminhpc-1:~/go/my_stdout$ 运行golang程序,Captured:后面就是获取的C函数打印的显示内容 adminhpc-1:~/go/my_stdout$ go run main.go Captured: Hello from C!adminhpc-1:~/go/my_stdout$ 一些说明 Go 语言提供了 cgo 工具用于在 Go 代码中调用 C 代码或让 C 代码调用 Go 代码。cgo 允许在 Go 代码中使用 C 函数、类型和变量并提供了一种在两种语言之间进行交互的机制。 import C上面紧挨的被注释的部分就是和C有关的信息#cgo CFLAGS: -I./include指定C源码和头文件所在目录-L${SRCDIR}/lib指定C编程的lib文件所在目录-lmyprint其中-l的后面是lib文件名(‘libmyprint.so’)去掉开头的’lib’后最后的’.so’之后的部分-rpath${SRCDIR}/lib指定了程序运行时候到哪里去找lib文件也就是说运行该程序的地方一定要有用到的.so文件接下来的两个#include就是标准的C语言预处理指令 syscall.Dup2 函数用于复制文件描述符file descriptor到指定的目标文件描述符。它使得目标文件描述符成为源文件描述符的副本两个文件描述符指向同一个底层文件或资源os.Pipe() 函数用于创建一个管道Pipe它提供了在同一程序内部的两个不同 goroutine 之间进行进程间通信IPC的机制
http://www.pierceye.com/news/113705/

相关文章:

  • 网站开发文档是什么概念注册个体户
  • 双井做网站的公司app开发和网站开发价格
  • 电梯企业网站制作中山网站建设电话
  • 做网站推广哪些跨境电商平台企业
  • 域名注册网站推荐方案模板
  • 亚运村网站建设北京工商注册官网
  • sql2005做网站书店网站建设人员分配
  • 工商局网站怎么做股东实名认证石家庄网站建设公司怎么样
  • 做公众号的模版的网站国内网站做国外服务器
  • 做国际网站的上海高端网站公司wordpress 4.9.6 下载
  • 学校集约网站建设最牛餐饮营销手段
  • wordpress影视站网站太花哨
  • 青岛 机械 中企动力提供网站建设小说网站怎么做空间小
  • 通江县网站建设做网站到八方资源网怎么样
  • 国家网站建设ssh架构jsp网站开发
  • 浦东新区手机网站设计网络营销做得好的产品
  • 浙江市建设网站市场监督管理局电话举报电话
  • 企业网站的建设的功能定位菏泽百度推广公司电话
  • linux系统怎么做网站女生去住建局好不好
  • 自己搭建环境建设网站网站开发温州
  • 下沙做网站软件erp系统的主要功能
  • 郑州网站建设专家最新手机排行榜2021
  • 宠物店网站建设策划书重庆网站建设 红旗河沟
  • 一般网站自己可以做播放器吗最简单的一个网站开发
  • 网站的开发商务网站安全方案设计
  • 如何建立网站教材漳诈网站建设
  • 开家网站设计公司广州网站建设app开发
  • 建站服务公司网站源码成都游戏外包公司排名
  • 呼伦贝尔网站建设呼伦贝尔astro wordpress
  • 做网站需要好多钱专业制作广告字