c - No such process - ptrace -


समस्या बयान : एक प्रोग्राम सी एक लूप से बना है इस कार्यक्रम का निष्पादन अन्य प्रक्रियाओं द्वारा नियंत्रित किया जाना चाहिए जो समय-समय पर नियंत्रित प्रक्रिया की प्रगति प्रदर्शित करेगा। kill (pid, SIGSTOP) के बाद, फ़ंक्शन ptrace (PTRACE_PEEKTEXT, pid, ...) अब C प्रक्रिया नहीं मिलती है pid द्वारा पहचाने जाने वाली प्रक्रिया को रोक दिया गया है जब मैंने पढ़ा है, ptrace (PTRACE_PEEKTEXT, pid, ... ) से काम करना है।

मुझे नहीं पता कि मुझे क्या याद आ रही है, इसलिए किसी भी मदद की सराहना की जाएगी। नीचे मैंने बहुत कुछ किया है:

दो प्रक्रियाएं हैं, पी और सी

पहली प्रक्रिया (पी) फोर्क () के माध्यम से दूसरा (सी) बनाता है

सी का कोड ऐसा है:

  int i = 0; Int main () {ptrace (PTRACE_TRACEME, 0, NULL, NULL); Printf ("मेमोरी पता =% p", (शून्य *) & amp; i); जबकि (1) {i ++;}}  

पी का कोड नीचे है:

  {...} स्विच (pid = fork ()) {case 0: / * बच्चे * / अगर (execl ("सी", "", (चार *) NULL) == -1) {दर्पण ("execl"); }     टूटना; मामले -1: / * त्रुटि * / प्रतिलिपि ("कांटा"); निकास (EXIT_FAILURE); डिफ़ॉल्ट: / * अभिभावक * / नींद (1); मार (पीआईडी, सिग्स्टॉप); इंतजार (& amp; स्थिति); यदि (WSTOPSIG (स्थिति) == SIGSTOP) {printf ("% s", "बच्चा बाधित था। सम्मिलित मेमोरी पता \ n"); scanf ( "% p" & amp; पते); Printf ("पता =% p", पता); डेटा = ptrace (PTRACE_PEEKTEXT, pid, पता, NULL); अगर (डेटा == - 1) {if (errno) {printf ("% s \ n", "त्रुटि PEEKTEXT \ n"); printf ( "% s \ n", strerror (errno)); } यदि (त्रुटि == ईएसआरसीएच) {printf ("% s \ n", "ESRCH त्रुटि \ n"); } यदि (त्रुटि == ईआईओ) {printf ("% s \ n", "ईआईओ त्रुटि \ n"); }} Printf ("डेटा पुनर्प्राप्त किया गया है:% ld \ n", डेटा); डेटा = ptrace (PTRACE_CONT, पीआईडी, 0, 0); } अगर (विइफिक्इट (स्थिति)) {printf ("[माता-पिता] - बाल का निकास का दर्जा है:% d \ n", WEXITSTATUS (स्थिति)); टूटना; }     टूटना; } {...}  

आउटपुट है:

  1. सी से: मेमोरी पता = 0x60104c
  2. पी से: बाल था बाधित। मेमोरी एड्रेस सम्मिलित करें (अगले में मैं क्या सी मुद्रित करता हूं)

पता = 0x60104c

और त्रुटि है:

त्रुटि PEEKTEXT

ऐसी कोई प्रक्रिया नहीं

ESRCH त्रुटि

*** पुनर्प्राप्त डेटा है: -1

सुनिश्चित करें कि पता चर सही प्रकार का है। मैंने शून्य * पते के साथ कोशिश की और यह मेरे लिए भी काम किया मुझे पता त्रुटि

के लिए int का उपयोग करके आपकी त्रुटि मिली

Comments

Popular posts from this blog

sql - Find last match with latest inserted name in table -

c# - XML serialize base class without knowing derived class -

ios - Invalid IPA: missing embedded provisioning profile. Are you sure this is an ad hoc? -