Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 按名称获取进程ID_C++_Linux_Process - Fatal编程技术网

C++ 按名称获取进程ID

C++ 按名称获取进程ID,c++,linux,process,C++,Linux,Process,我想在Linux下获得一个进程ID 有没有一个简单的方法可以做到这一点 我没有发现C++上任何可以很容易使用的东西!p> 您可以使用/proc中的信息 是一个例子。如果选择“易于使用” char buf[512]; FILE *cmd_pipe = popen("pidof -s process_name", "r"); fgets(buf, 512, cmd_pipe); pid_t pid = strtoul(buf, NULL, 10); pclose( cmd_pipe );

我想在Linux下获得一个进程ID

有没有一个简单的方法可以做到这一点


<>我没有发现C++上任何可以很容易使用的东西!p> 您可以使用
/proc
中的信息


是一个例子。

如果选择“易于使用”

char buf[512];
FILE *cmd_pipe = popen("pidof -s process_name", "r");

fgets(buf, 512, cmd_pipe);
pid_t pid = strtoul(buf, NULL, 10);

pclose( cmd_pipe );  
这是一条路要走


是的,很难看,我知道。最好去读一读源代码。

取决于您对“易用性”的定义。如果有多个可执行文件实例在运行呢?您可以随时查看
ps
top
(查看它们从何处获得进程列表),或者更好的是,
killall
(看看它是如何根据你给它起的名字来查找PID的)。是的,很简单:只要扫描
/proc/XXX/
其中
XXX
都是PID。如何做到这一点,你可以在
pgrep
的源代码中看到。我在我的守护进程中做了类似的事情(确保守护进程只运行一个)你能执行<代码> pIDOF< <代码>吗?嗯……我不能在C++程序中使用它,我能吗?你最初的答案有什么问题?这是丑陋的C代码(撤回我的投票)。错误的是PIDOF不返回PID,它将PID打印到标准输出(并且成功返回0)。@MikeTelson,你可以使用它,为什么不呢?正确的方法当然是通过阅读proc(你可以从中学习。但它绝对不“容易使用”。是的,我可以!它在第一个版本的答案中没有理解,但现在我理解了完整的代码。谢谢!(当我获得15个声誉时,我会投票)