Exécuter un autre programme de go à partir de l'intérieur d'un programme golang
Je veux exécuter un autre programme de go à partir de l'intérieur d'un autre programme de go et de donner des arguments, quelque chose comme ceci:
package main
func main() {
//here I want to call a specific go file, e.g. test.go with args
}
test.aller
package main
func main(x int) {
//do stuff with x
}
Je ne veux pas envoyé un int arg, mais quelque chose comme http.ResponseWriter
Une solution, j'ai pensé de suite, mais il ne serait pas vraiment bon:
- Utiliser au gouvernement burundais pour convertir le http.ResponseWriter dans une chaîne
- Lire dans une ligne de test.aller
- Envoyé la chaîne de test.aller
Merci pour toute les réponses 😀
- Double Possible de Comment utiliser des packages personnalisés en golang?
- Ce n'est pas un doublon, la question que vous mentionnez veut importer un aller fichier source, ce qui est déjà connu avant l'exécution du programme, tandis que je veux charger un aller à la source du fichier/fichier compilé et seulement obtenir le nom de fichier lors de l'exécution.
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de façons de le faire Interopérabilité :
1 - je vous recommande d'utiliser le standard golang paquet (Lib), appelant, à la place de l'Interopérabilité, si vous avez des fichiers source des deux côtés.
2 - à l'aide de "os/exec": si vous n'avez pas de source, et vous avez seulement binaire,
ou vous pouvez passer des arguments par le biais de fichiers ou d'un texte args:
vous pouvez passer des arguments comme ceci:
ou à l'aide de "drapeau" std lib:
qui offre -h pour obtenir de l'aide.
et vous pouvez appeler un autre programme binaire ou golang compilateur lui-même comme ceci:
3 - une autre façon est d'appeler un programme externe en utilisant stdin /stdout.
de cette façon, vous pouvez envoyer des données binaires sur stdin/out:
Ici fichier "a" appels de fichier binaire "b" et l'envoie et reçoit par stdin/stdout:
c'est ma conversion à partir de :
http://erlang.org/doc/tutorial/c_port.html
(vous pouvez utiliser os tube nommé)
déposer une:
fichier b:
4 - une autre façon est d'utiliser "net/rpc", c'est le meilleur moyen pour l'appel d'une autre fonction à partir d'un autre programme.
exemple:
À l'aide de
os/exec
, vous pouvez appeler l'aller compilateur comme suit:Aller ne fait pas passer des paramètres à des programmes à travers la
main
, par exemple,func main(x int)
. La façon de le faire dans le jeu de Go est avecos.Args
.Il me semble que vous êtes en train d'utiliser le PHP concepts en Aller, qui ne se terminera pas bien. Au lieu de cela, vous devriez être en utilisant des modèles et des fichiers statiques pour réaliser un site web dynamique. Découvrez le package
text/template
.Créer un executabl fichier pour le forfait que vous souhaitez exécuter à partir d'un autre fichier. Fournir un chemin relatif pour le fichier que vous voulez exécuter à l'intérieur de
exec.Command
. Par exemple:Fichier Un
Créer un fichier binaire/exécutable pour le fichier ci-dessus. Le fichier sera à l'intérieur de l'emballage de manière à pied de l'emballage et de lancer le fichier exécutable.
Ci-dessous est le cas du fichier binaire à l'intérieur de systèmes linux.
Fichier B