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

c# - SignalR: "Protocol error: Unknown transport." when navigating to hub -

class - Kivy: how to instantiate a dynamic classes in python -

java - Algorithm negotiation fail SSH in Jenkins -