2017-04-10 5 views
2

Est-il possible de trouver au début du temps des appels système .Comment de temps les appels système prend par exemple:Comment trouver la durée de l'appel système?

system(smbtree); 

Comment puis-je trouver Pendant combien de temps ci-dessus takes.so appel système que je peux afficher en attente temps?

Je peux calculer le temps d'exécution en utilisant time() mais est-il possible de trouver tôt pour que je puisse mettre le compte à rebours ou le temps d'attente?

+0

c'est comme voir le futur. Vous ne pouvez pas savoir combien de temps X prendra avant que X ne soit exécuté, l'opération X doit communiquer la progression pour pouvoir afficher une progression précise. – Raxvan

+0

Dès que nous aurons résolu le problème d'arrêt, nous devrions être capables d'écrire une fonction qui peut le faire aussi :) –

Répondre

4

Vous ne pouvez pas.

Il est tout simplement impossible de savoir à l'avance combien de temps un appel shell arbitraire prendra pour se terminer. Non seulement chaque appel est différent, mais différents ordinateurs exécutant différents nombres de processus sous différents systèmes d'exploitation sur des processeurs différents à des températures différentes prendront un temps différent pour effectuer la tâche. Naïvement, le mieux que vous puissiez faire est d'arriver à une vague estimation basée sur des tests empiriques (comme "mon script shell prend environ cinq secondes à courir où je l'ai testé") et j'espère que c'est assez proche en réalité. Assurez-vous d'écrire votre code pour supporter le dépassement et/ou changer cette estimation, comme cela arrivera souvent.

Une solution appropriée implique que le processus tiers lui-même fournisse des informations d'état directement au processus appelant au fur et à mesure de son avancement.

+0

merci BTW amour Ur suggestion – rick

-1

Vous devrez d'abord calculer le temps d'exécution à l'avance car le temps qu'il faudra dépend de la machine sur laquelle il est exécuté.

+0

Cela dépendra de beaucoup plus que cela. –

+0

@BoundaryImposition Alors, comment est-ce que je me suis trompé? Ce n'est pas parce que cela dépend de plus que cela ne rend pas le fait que la machine sur laquelle il est utilisé est l'un des facteurs les moins vrais. – OpenUserX03

+0

Je n'ai pas dit que c'était faux. –