Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/49: Рейтинг темы: голосов - 49, средняя оценка - 4.82
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134

Найти файл по его pid и убить его

22.10.2010, 17:58. Показов 10543. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите написать программу которая находит файл по его pid и убивает его
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2010, 17:58
Ответы с готовыми решениями:

Закрытие процесса по его PID и заморозка процесса по его имени или PID
Нужны две вот такие функции закрытие процесса по его PID и заморозка процесса по его имени или PID. В Делфи я новичок, по этому без помощи...

Как узнать PID батника и записать его в файл?
Есть батник, который поднимает некую программу, если она выключилась. Нам нужно уметь остановить этот батник удаленно, для чего надо...

Найти PID процесса и завершить его
Добрый день! Пишу минифильтр файловой системы и хочу блокировать доступ к определенным файлам (в kernel-mode). С этой задачей я справился,...

30
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
22.10.2010, 18:17
Цитата Сообщение от suv121 Посмотреть сообщение
находит файл по его pid и убивает его
файлы по pid`у не ищут, и тем более не убивают.
поясните.
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
22.10.2010, 18:22  [ТС]
ну вообщем нужно найти процесс по его Pid и удалить его
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
22.10.2010, 18:45
pid процесса - это и так его идентификатор. процесс убивается по pid`у.

или тебе нужно найти определить pid процесса зная его имя?
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
24.10.2010, 22:16  [ТС]
мне известно имя , по нему определить пид и убить процесс , это надо реализовать на си , чтобы когда в консоле я вызывал программу она спрашивала только название
через команды это можно сделать легко , через grep , а потом kill
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2010, 22:29
Цитата Сообщение от suv121 Посмотреть сообщение
мне известно имя , по нему определить пид и убить процесс
выродил..наконец-то
а до сих пор, кто писал тот бред что выше? энергетический клон?
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
24.10.2010, 22:31  [ТС]
просто мне только щас уточнили задание
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2010, 22:36
я так понимаю, системные утилиты нельзя вызывать из кода программы?
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
24.10.2010, 22:52  [ТС]
Цитата Сообщение от niXman Посмотреть сообщение
я так понимаю, системные утилиты нельзя вызывать из кода программы?
я думаю можно
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2010, 23:02
это все упрощает.
читаем ман:
man pidof
из этого понимаем, что если выполнить в консоле: pidof process_name, то получим его pid. дальше убиваем его.
значит нам нужно выполнить:
C
1
FILE* f = popen("/bin/pidof process_name", "r");
из f читаем строку и приводим ее к целому.
все)
1
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
24.10.2010, 23:09  [ТС]
а как в си реализовать убийство процесса?
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2010, 23:13
путем чтения "man 2 kill"

зы
не забываем жать на "спасибо"
1
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
28.10.2010, 22:18  [ТС]
а как на сделать чтобы я вводил в программу на си только имя процесса , а программа сама определяла пид и убивала?
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
28.10.2010, 23:39
найти процесс по имени и определить его PID.
процессы ищутся путем парсинга вывода ps, или путем чтения procfs
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
29.10.2010, 23:54  [ТС]
а можно пример кода

Добавлено через 10 часов 16 минут
вот что у меня получается
C
1
2
3
4
5
6
7
8
9
#include<stdio.h>
main(){
char a[10];
int b;
printf("enter name procces:\n");
gets(a);
b=getpid(a);
kill (b, SIGKILL);
}
какие библиотеки нужно ещё подключить и будет ли работать эта программа?
процесс название которого я должен ввести , это запущенная программа с бесконечным циклом
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.10.2010, 00:53
Цитата Сообщение от suv121 Посмотреть сообщение
getpid(a);
это что такое?
эта функция не принимает никаких аргументов. и возвращает она именно pid текущего процесса.

я же вам написал каким образом определяется pid по имени процесса.

Добавлено через 1 минуту
и возвращает она не int.
у какой балды вы этот код взяли?
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
30.10.2010, 10:16  [ТС]
а можете в мой код вставить нахождение пида по имени
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.10.2010, 11:48
Цитата Сообщение от suv121 Посмотреть сообщение
а можете в мой код вставить нахождение пида по имени
во первых - не понятно что это. вопрос?
во вторых - если это вопрос, не понятно почему бы вам самим этого не сделать.
в третьих - если вам западло, то мне стократно. из принципа.
0
4 / 4 / 0
Регистрация: 04.12.2009
Сообщений: 134
30.10.2010, 12:32  [ТС]
я не понимаю как связать FILE* f = popen("/bin/pidof process_name", "r"); с введенным мною именем процесса и как преобразовать f к целочисленному виду
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
30.10.2010, 19:00
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

вот
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
 
int get_pid(const char* pname) {
   char buf[128] = "/bin/pidof ";
   char* p = &buf[0];
   strcat(buf, pname);
   
   FILE* f = popen(buf, "r");
   if ( !f ) {
      perror("popen():");
      return -1;
   }
   while ( !feof(f) ) {
      *p++ = fgetc(f);
   }
   pclose(f);
   return (p > &buf[0]) ? atoi(buf) : -1;
}
 
int main() {
   int pid = 0;
   char pname[128] = "\0";
 
   strcpy(pname, gets(pname));
   printf("pid: %d\n", (pid=get_pid(pname)));
 
   if ( pid != -1 ) {
      if ( kill(pid, SIGKILL) ) {
         perror("kill():");
      }
   } else {
      printf("process not found");
   }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2010, 19:00
Помогаю со студенческими работами здесь

Завершение процесса по его PID
Пишу прожку, которая запускает и завершает процесы. Нужно что-бы она определила свой PID и по нему завершилась. Как грохнуть процесс по...

Состояние процесса по его pid
Подскажите функцию, которая возвращает состояние процесса.(выполняется, завершился и тд) Запускаю процесс функцией spawn(), которая...

listview и получение PID у его элементов
пишу диплом. Однин из его элементов это обозреватель процессов, с возможностью их завершения. Сами процессы отображаются в Listview, где 3...

Проверить завершился ли процесс зная его PID
Есть процесс родитель и потомок. Нужно сделать так, что бы если завершился один из них, то сразу завершался бы и второй. Как такое...

Убить таймер по условию его наличия
В программе есть таймер SetTimer(), убивается он в двух случаях. По завершении одной из задач, либо при выходе из программы. Как проверить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru