Как программно узнать pid процесса по его имени?
Как программно узнать pid процесса по его имени?
ps -e | grep <имя>
подробнее об опциях команды ps :
man ps
пример :
[console]
root@host:~# ps -e | grep firefox
10488 ? 00:00:00 firefox
10505 ? 00:00:10 firefox-bin
[/console]
gramozeka, мне и сказать нечего... плюсую...
Вопрос в разделе программирование, поэтому автор, вероятно, хотел узнать как определить pid из своей програмы.
можно, конечно вызвать ps из программы но это слишком коряво, наверняка есть соответствующий системный вызов (если кто знает подскажите).
В крайнем случае можно прочитать каталог proc там есть для каждого процесса ссылка exe на имя исполняемого файла .
Вопрос в разделе программирование, поэтому автор, вероятно, хотел узнать как определить pid из своей програмы.
bash это не ЯП? это мы здесь обсудим: http://linuxforum.ru/viewtopic.php?id=3817
что касается C, то далеко ходить не надо:
GETPID(2) Linux Programmer's Manual GETPID(2)
NAME
getpid, getppid - get process identification
вы разве не поставили вместе с gcc ещё и мануал? зря...
Какой именно ЯП интересует?
PS:
в man'е есть поиск:
$ man -k pidи есть секции:
MANUAL SECTIONS
The standard sections of the manual include:
1 User Commands
2 System Calls
3 C Library Functions
4 Devices and Special Files
5 File Formats and Conventions
6 Games et. Al.
7 Miscellanea
8 System Administration tools and Deamons
Отныне любой обращённый ко мне вопрос, я буду расценивать как объявленье войны.
(С)СашБаш
(если ответ на него за 0.1 секунду берётся в мане)
ну или пишите: "начальник запретил Linux, сижу в windows, ссылку на man'ы забыл, в гугле забанили"
;)
Ещё pidof.
Пётр.
Вопрос в разделе программирование, поэтому автор, вероятно, хотел узнать как определить pid из своей програмы.
можно, конечно вызвать ps из программы но это слишком коряво, наверняка есть соответствующий системный вызов (если кто знает подскажите).
В крайнем случае можно прочитать каталог proc там есть для каждого процесса ссылка exe на имя исполняемого файла .
Да пожалуй через proc самое то.
Вопрос в разделе программирование, поэтому автор, вероятно, хотел узнать как определить pid из своей програмы.
можно, конечно вызвать ps из программы но это слишком коряво, наверняка есть соответствующий системный вызов (если кто знает подскажите).
В крайнем случае можно прочитать каталог proc там есть для каждого процесса ссылка exe на имя исполняемого файла .
Я сейчас посмотрел - не для каждого. Вот в status имя программы без пути есть.
Пётр.
Я сейчас посмотрел - не для каждого
Я тоже посмотрел, похоже что ссылок нет у процессов запущенные ядром при старте.
Обычные процессы имеют ссылку на исполняемый файл.
можно было-бы не смотреть, а почитать (хотя мана тут мало). где-то был мануал на эту тему, там написано не только КАК, но и ПОЧЕМУ (что-то там с безопасностью, не вдавался). в любом случае, если встал такой вопрос, то можно посмотреть исходники ps - она-же как-то узнаёт?
то можно посмотреть исходники ps - она-же как-то узнаёт?
если мне потребуется, то так и сделаю :).