亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

go語言和c語言寫的程序通信問題

go語言和c語言寫的程序通信問題

Go
呼如林 2018-08-28 15:29:20
請問在linux平臺go語言和c語言分別寫個程序,兩者如何通信?假設go寫webserver,c控制底層硬件(比如嵌入式)。我想實現web server將受到的指令給c程序,從而實現遠程控制。
查看完整描述

2 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

不知道題主的web server和硬件之間能夠通過什么方式連接,我想有以下這幾種情況。
如果是在同一臺機器上的直接調用C函數或者動態庫即可。
如果是通過串口連接,server將命令通過串口發送給設備,設備接收串口數據,然后實現相應的功能。
如果通過網絡連接,server和設備之間可以保持一個長連接,server通過socket將數據發送到設備。

查看完整回答
反對 回復 2018-09-05
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

不太明白你的通信指啥子。我假設你的意思是Go和C通過內存互相傳遞變量是么?引申下就是Go調用C函數了是么?

摘抄自:CSDN-關于go語言

從Go調用C/C++:Rob Pike的GC
package里有一個工具叫cgo,可以讓Go程序調用標準C程序。另一個更現實的路子是:SWIG從2.0版本開始支持Go,讓Go程序能調用C/C++程序。如果用SWIG
+ Rob Pike的GC,那么可以把C/C++程序編譯成一個shared library,然后Go程序在運行的時候鏈接之。但是在寫分布式計算程序的時候,我們經常希望用靜態鏈接——這樣executable
binary file雖然較大,但是不需要實現在機群中每臺機器上保證部署相同版本的動態鏈接庫。這種需求需要用 SWIG + Ian
Taylor的gccgo編譯器。我在32bit的Ubuntu Linux和64bit的SUSE Linux上都成功的編譯了剛剛發布的GCC
4.6(其中包含gccgo),并且實驗了SWIG + gccgo的方法。

節選自:具體請打開該文章詳細看看開源中國-Go和C如何共享內存資源

Go語言的cgo技術允許在Go代碼中方便的使用C語言代碼. 基本的用法如下:

package rand/*
#include <stdlib.h>
*/import "C"func Random() int {    return int(C.random())
}func Seed(i int) {
    C.srandom(C.uint(i))
}

其中"C"是導入一個虛擬的包, 用于引用C語言的符號.


查看完整回答
反對 回復 2018-09-05
  • 2 回答
  • 0 關注
  • 1323 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號