2010-06-22 13 views
60

मैं बैक में फोर्क और निष्पादन कैसे कार्यान्वित करूं?कांटा और बैश में निष्पादन

हमें मान लीजिए स्क्रिप्ट चलो के रूप में

echo "Script starts" 

function_to_fork(){ 
sleep 5 
echo "Hello" 
} 

echo "Script ends" 

मूल रूप से मैं चाहता हूँ कि समारोह की तरह सी में हम कांटा और कार्यकारी कॉल का उपयोग नई प्रक्रिया के रूप में कहा जा ..

स्क्रिप्ट से यह आशा की जाती है कि अभिभावक स्क्रिप्ट समाप्त हो जाएगी और उसके बाद 5 सेकंड के बाद, "हैलो" मुद्रित किया जाएगा।

उत्तर

105

एम्परसेंड का प्रयोग करें जैसे आप खोल से करते।

#!/usr/bin/bash 
function_to_fork() { 
    ... 
} 

function_to_fork & 
# ... execution continues in parent process ... 
+2

यह बिल्कुल "कांटा" जैसा नहीं है। मैं सी या रूबी में कांटा का उपयोग करके कुछ कमांड का परीक्षण करता हूं, और यह अच्छी तरह से चलता है। लेकिन ऊपर की तरह "&" का उपयोग करके, यह विफल रहता है। – user180574

+0

अच्छा, लेकिन ... जब मैं किसी फ़ंक्शन का उपयोग करने का प्रयास करता हूं तो मैं आम तौर पर विफल रहता हूं। मैं एक अलग लिपि का उपयोग करता हूं और इसे कॉल करता हूं। अधिक बहुमुखी। रीडायरेक्ट और पृष्ठभूमि कार्यक्षमता अधिक सहज है और कमांड लाइन से अधिक आसानी से परीक्षण किया जा सकता है। – nroose

29

के बारे में कैसे:

(sleep 5; echo "Hello World") & 
+0

कि कांटा और इंतजार – Brian

+0

@staticx मतलब है कि प्रक्रिया बांट होगा, लेकिन माता-पिता '()' रिटर्न जब तक क्रियान्वित करने के लिए जारी नहीं होगा? – msanford

+0

@ ब्रायन यह मेरे लिए इंतजार नहीं करता है, सिर्फ फोर्क – BryanK

संबंधित मुद्दे