2010-03-25 69 views

Répondre

0

Ce n'est pas une bonne approche, pour diverses raisons - idéalement, vous devez modifier la boucle extérieure de votre programme afin qu'il puisse traiter tous les fichiers sur la ligne de commande, vous pouvez simplement faire tout en une seule fois:

$ shark -i 
$ mycprog $SomeDirectory/* 

Si vous ne pouvez pas faire cela, vous devrez définir votre configuration Shark pour le profilage à l'échelle du système et commencer le profilage avant votre bash loop et arrêter le profilage par la suite. Lorsque vous visualiserez ultérieurement le profil dans Shark, vous pourrez filtrer les processus qui ne vous intéressent pas.

Commencez par ouvrir Shark (l'application GUI), configurez votre configuration et activez le contrôle à distance (Sampling = >Programmatic). Assurez-vous que vous avez sélectionné Time Profile et Everything.

Ensuite, à partir de la ligne de commande:

$ chudRemoteCtrl -s "mycprog" 
$ sleep 1 
$ for f in $SomeDirectory/* 
$ do 
$  mycprog $SomeDirectory/$f 
$ done 
$ chudRemoteCtrl -e 
+0

Merci pour votre réponse. Il est très difficile de modifier le comportement de mes c-programmes. –

+0

@Peter: il ne devrait pas être si difficile - tout ce que vous devez ajouter est une boucle supplémentaire dans main() qui va exécuter votre code à plusieurs reprises pour chaque fichier sur la ligne de commande. –

+0

Merci pour votre réponse. Je comprends ce que tu dis. L'exemple que j'ai posté ici est très simple. Il y a beaucoup de conditions dans cela pour la boucle dans le script shell, donc c'est très difficile pour moi de changer le code source du c-programme. Je veux juste savoir s'il y a des solutions qui utilisent le contrôle par programme requin ou autre chose. Une autre question rapide ici: J'ai utilisé: shark -i mycprog -o mycprogsessionname l'option -o ne fonctionne pas du tout, ce qui est très étrange pour moi. J'ai beaucoup googlé, mais pas de succès. –