2011-05-11 2 views
4

J'ai une question simple. Je veux exécuter un programme C dans un script shell. Comment je fais ça? Merci d'avance pour votre aide.Comment appeler un programme C dans un script shell?

+1

Il devrait être possible simplement en mettant le nom du programme sur la ligne. Qu'avez-vous essayé et que s'est-il passé? – FrustratedWithFormsDesigner

+3

Cette question est soit trop simple soit trop complexe. S'il vous plaît fournir un exemple de ce que vous voulez faire. Tout ce qui se passe dans un script shell implique l'appel de programmes C. –

+1

N'exécuter aucun programme C dans un script shell serait plus difficile ... – jlliagre

Répondre

6

En supposant qu'il est linux/unix dont nous parlons:

#!/bin/sh 
/path/to/executable arg1 arg2 
4
cc hello_world.C#produces a.out 
./a.out #run your program 

à mon humble avis, votre problème est le $ PATH. Votre répertoire en cours est pas dans PATH, alors quand vous entrez

a.out 

votre répondre shell:

-bash: a.out: command not found 

vous doit l'exécuter comme

./a.out 

(ou ajouter "" à votre PATH, mais ceci est pas recommandé.)

2

Presque tous les programmes que vous exécutez dans un script shell sont des programmes C (mais certains, souvent plusieurs, des commandes que vous exécutez peuvent être intégrés dans le shell). Vous exécutez un programme C de la même manière que tout autre programme:

  • Par basename: command [arg1 ...]
    • La commande doit être dans un répertoire recherché par le shell - sur votre PATH, en d'autres termes.
  • Par nom relatif: ./command [arg1 ...] ou ../../bin/command [arg1 ...]
    • Le programme doit exister et être exécutable (par vous)
  • Par nom absolu: /some/directory/bin/command [arg1 ...]
    • Le programme doit exister et être exécutable (par vous)

L'un des atouts d'Unix est que les programmes que vous créez, que ce soit en langage C ou dans une autre langue, atteignent le même statut que les commandes fournies par le système. La seule différence est que les commandes fournies par le système se trouvent à un emplacement différent (par exemple /bin ou /usr/bin) des commandes que vous créez (telles que usr/local/bin ou $HOME/bin).

Questions connexes