Как мне сделать os.getpid () в C ++? - PullRequest
0 голосов
/ 13 февраля 2010

новичок здесь. Я пытаюсь сделать программу на C ++, которая будет читать из именованного канала, созданного Python. Моя проблема в том, что именованный канал, созданный python, использует os.getpid () как часть имени канала. когда я пытаюсь вызвать канал из c ++, я использую getpid (). я не получаю то же значение от C ++. Есть ли эквивалентный метод в C ++ для os.getpid?

спасибо!

редактирование:

извините, я на самом деле использую os.getpid (), чтобы получить идентификатор сеанса через ProcessIDtoSessionID (). Затем я использую идентификатор сеанса как часть имени канала

Ответы [ 4 ]

4 голосов
/ 13 февраля 2010

Вы не получаете одинаковые идентификаторы процессов, потому что ваша программа на python и программы на c ++ выполняются в разных процессах, поэтому имеют разные идентификаторы процессов. Поэтому обычно используйте другую логику для именования файлов fifo.

2 голосов
/ 13 февраля 2010

Вы не получите такое же значение, если вы работаете как отдельный процесс, поскольку каждый процесс имеет свой собственный идентификатор процесса. Найдите другой способ идентифицировать трубу.

0 голосов
/ 13 февраля 2010

Вы не можете легко получить PID интерпретатора Python из вашей программы на C ++.

Либо назначьте именованному каналу постоянное имя, либо, если вам действительно нужно несколько каналов одной и той же программы Python, создайте временный файл, в который программы Python записывают свои PID (используйте блокировку файла!) - затем вы можете прочитать PID из программы на C ++.

0 голосов
/ 13 февраля 2010

Стандартная библиотека не дает вам ничего, кроме файлов. Вам нужно будет использовать какой-то другой специфичный для ОС API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...