SkyLimited
			
				написал 17 июля 2013 года в 09:09 (2057 просмотров)
			
			
			Ведет себя
			неопределенно; открыл 1 тему в форуме.			
	
	Всем здравствуйте.
С++
Вначале я делаю fork() Прошу прощения, что без оформления, ссылка код не работает ни в ff ни в chrome.
[code]pid_t parpid, sid; parpid = fork();
if(parpid<0) exit(1); else if(parpid!=0) exit(0);
umask(0);
sid = setsid(); if(sid<0) exit(1); close(STDIN_FILENO); close(STDERR_FILENO); close(STDOUT_FILENO);
[/code]После этого я пытаюсь вызывать netstat таким образом: Функция:
[code]std::string exec(const char* cmd) { FILE* pipe = popen(cmd, "r"); if (!pipe) return "ERROR"; char buffer[128]; std::string result = ""; while (!feof(pipe)) { if (fgets(buffer, 128, pipe) != NULL) result += buffer; } pclose(pipe); return result; }
Сам вызов:
[/code][code]const std::string cmd = "netstat -atun"; std::string res = exec(cmd.c_str());
[/code]Однако, все зависает на строчке "fgets"
Буду благодарен за помощь.
Последние комментарии
-  
        
            OlegL, 17 декабря 2023 года в 15:00            →
        
        
            Перекличка
            21
        
  -  
        
            REDkiy, 8 июня 2023 года в 9:09            →
        
        
            Как «замокать» файл для юниттеста в Python?
            2
        
  -  
        
            fhunter, 29 ноября 2022 года в 2:09            →
        
        
            Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
            6
        
  -  
        
            Иванн, 9 апреля 2022 года в 8:31            →
        
        
            Ассоциация РАСПО провела первое учредительное собрание
            1
        
  -  
        
            Kiri11.ADV1, 7 марта 2021 года в 12:01            →
        
        
            Логи catalina.out в TomCat 9 в формате JSON
            1
        
  
DevOps as a Service from Palark
	24/7 SRE & DevOps service to cover all your Kubernetes needs.

У меня этот код работает. Складывает вывод netstat в tmp.out. Вероятно у тебя где-то в другом месте ошибка. Или ты что-то не так понял.