जवाबों:
आप कमांड विंडो की पृष्ठभूमि में एक प्रक्रिया को चलाने के लिए स्टार्ट कमांड का उपयोग कर सकते हैं।
command1
command2
start command3
command4
कमांड 2 खत्म होने तक इंतजार करता है, लेकिन कमांड 4 उस कमांड 3 फिनिश का इंतजार नहीं करता है।
और यदि आपको स्वतंत्र रूप से लॉग ऑन किए गए उपयोगकर्ता को चलाने की आवश्यकता है, तो आपको एक सेवा के रूप में प्रक्रिया शुरू करने की आवश्यकता है और आप anysrv.exe का उपयोग कर सकते हैं
exec(<some windows executable>)
। मैं पेरेंट-चाइल्ड रिलेशनशिप के प्रोसेस एक्सप्लोरर में स्पष्ट रूप से देख सकता हूं और जो कुछ भी मैं भीतर से शुरू exec()
करता हूं वह जीवित नहीं रहता है। सही है कि यह काम करने लगता है अगर मैं cmd.exe
स्टार्ट मेनू से शुरू करता हूं, जहां शुरू होने पर प्रक्रिया शुरू होने पर 'सही ढंग से' अनाथ हो जाती cmd.exe
है। स्पष्ट रूप से मुझे इसे बेहतर समझने की जरूरत है। :-(
आप विंडोज़ सेवाओं को देखना चाह सकते हैं। कुछ उपकरण हैं जिन्हें आप किसी भी प्रक्रिया को विंडोज़ सेवा के रूप में होस्ट करने के लिए डाउनलोड कर सकते हैं। यह प्रक्रिया को विंडो स्टार्टअप पर पृष्ठभूमि में लोड करने का कारण बनता है, इसलिए बशर्ते इसके लिए आपको उपयोगकर्ता सहभागिता की आवश्यकता नहीं है जो आपको इस तरह होस्ट करने में सक्षम होना चाहिए।
आपके द्वारा किए जाने वाले टूल को srvany.exe कहा जाता है।
एक ही तरीका है, विंडोज में, कि आप एक उपयोगकर्ता द्वारा शुरू की गई प्रक्रिया को लॉगऑफ के बाद भी जारी रख सकते हैं (यानी "nohup" क्या करता है) इसे "शेड्यूल किए गए कार्य" या विंडोज सेवा के माध्यम से शुरू करना है। जब उपयोगकर्ता लॉगऑन सत्र में सभी प्रक्रियाओं को लॉग ऑफ करता है तो उसे मार दिया जाएगा।
यदि आप "शेड्यूल किए गए कार्य" विधि को आजमाने के लिए खेल रहे हैं, तो आप जानना चाहेंगे कि उन्हें प्रोग्रामेटिक रूप से कैसे बनाया जाए। Win32_ScheduledJob WMI वर्ग यह कर सकते हैं। दस्तावेज़ीकरण यहां विस्तार से दिया गया है: http://www.microsoft.com/technet/scriptcenter/guide/sas_man_rsxs.mspx?mfr=true मूल रूप से, आप ऐसा कर रहे हैं (बेशर्मी से Microsoft से चुराया हुआ):
Set objService = GetObject("winmgmts:\\.")
Set objNewJob = objService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create("Program-to-execute.exe", "ugly-formatted-time-string-per-Microsoft-docs",True ,1 OR 4 OR 16, , ,JobID)
If Err.Number = 0 Then
Wscript.Echo "New Job ID: " & JobID
Else
Wscript.Echo "An error occurred: " & errJobCreated
End If
"जो उपयोगकर्ता" को अनुसूचित कार्यों को बनाने की क्षमता प्रदान करने के लिए, आपको% SystemRoot% \ Tasks फ़ोल्डर पर अनुमति को संशोधित करना होगा। उस मोर्चे पर कुछ जानकारी के लिए यहां देखें: http://technet.microsoft.com/en-us/library/cc785125(WS.10).aspx
यह सब इस बात पर निर्भर करता है कि आपका अंतिम उद्देश्य क्या है। आप केवल चलाने के लिए विकल्प के साथ एक निर्धारित कार्य चला सकते हैं यदि उपयोगकर्ता सेट पर लॉग ऑन है। आप संभवतः रिमोट मशीन से पेक्टेक का उपयोग कर सकते हैं। सेवा के रूप में प्रक्रिया को चलाने के लिए बेहतर हो सकता है। की जाँच करें इस Google खोज , यह अन्य Google खोज , इस सूत्र , और यह अन्य धागा एक समाधान के लिए अपनी खोज में कुछ संभव सुराग के लिए। अंतत: ऐसा प्रतीत होता है कि विंडोज मशीन पर nohup के बराबर कोई सटीक नहीं है ।
START
कमांड एक टुकड़ी नहीं करता है, अर्थात यह अभी भी उस प्रक्रिया का एक बच्चा है जिसने इसे बनाया है। आपके उदाहरण में इसका मतलब यह होगा कि जब भी माँ प्रक्रिया से बाहर निकलती है तो 'कमांड 3' मर जाएगी। यूनिक्स ने इसे करने के लिए 'कांटा-दो बार' के रूप में जाना, लेकिन मुझे विंडोज में एक समकक्ष का पता नहीं है।