मैंने आदेशों को दोहराने के लिए एक सरल रैपर स्क्रिप्ट लिखी है जब वे retry.py कहलाते हैं। हालांकि, जैसा कि मैं बाल कमांड के आउटपुट को देखना चाहता हूं, मुझे कुछ पीटीआई चाल खींचनी पड़ी है। यह rsync जैसे प्रोग्रामों के लिए ठीक काम करता है लेकिन एसपीपी जैसे अन्य लोग अपने प्रगति मीटर जैसी चीजों को दिखाने के लिए अतिरिक्त परीक्षण लागू करते हैं।मैं एक पीटीआई के तहत चल रहे एक प्रक्रिया के लिए टर्मिनल अग्रभूमि प्रक्रिया समूह कैसे सेट करूं?
getpgrp() == tcgetpgrp(STDOUT_FILENO);
कौन सा विफल रहता है जब मैं हालांकि आवरण स्क्रिप्ट चलाने:
SCP कोड एक परीक्षण मोटे तौर पर यह है कि है।
./tty_tests
isatty reports 1
pgrps are 13619 and 13619
और:
./retry.py -v -- ./tty_tests
command is ['./tty_tests']
isatty reports 1
pgrps are 13614 and -1
child finished: rc = 0
Ran command 1 times
मैं tcsetpgrp (का उपयोग कर की कोशिश की है), जो प्राइवेट fd की लेकिन उस पर एक IOCTL के रूप में समाप्त होता है तुम मेरे सरल tty_test.c परीक्षण मामले के साथ देख सकते हैं ptys के लिए एक -EINVAL में परिणाम। यदि संभव हो तो मैं पाइथन उपप्रोसेसर मशीनरी का उपयोग करना जारी रखूंगा या इसके लिए मैन्युअल रूप से फोर्क/निष्पादित करने की आवश्यकता होगी?
मैंने इसे आज़माया और इसका कोई प्रभाव नहीं पड़ा: > retry.py -v - ~/mysrc/retry.git/tty_tests कमांड ['/home/ajb/mysrc/retry.git है/tty_tests '] isatty रिपोर्ट 1 pgrps 28268 और -1 बच्चे समाप्त हो गया: आरसी = 0 रण आदेश 1 बार – stsquad
क्या आप कुछ पूरा कोड पेस्ट कर सकते हैं? –
ओएच! मैंने अभी देखा है कि आपने अपने प्रश्न में retry.py का एक लिंक दिया है। मैंने सोचा था कि केवल स्टैकओवरफ्लो सहायक होने की कोशिश कर रहा था और मेजबाननाम की तरह दिखने वाले किसी चीज़ से लिंक बना रहा था। मैं एक नजर मार लूगां। –