我一直在看kdbg源代码。我注意到在以下地方出现了以下源代码行:

::kill(pid(), SIGINT);

我的问题是我无法理解pid()的实现位置。从我在网上的搜索来看,这似乎不是系统调用。收集kdbg源代码树并没有提供实现它的任何线索。

尽管我已经进行了很多年的C开发,但我对C++的经验并不丰富。这真是莫名其妙。有人有什么想法吗?

最佳答案

cd tmp
git clone git://repo.or.cz/kdbg.git
grep -lrE "pid\(\)" *
>kdbg/gdbdriver.cpp
>kdbg/xsldbgdriver.cpp
>kdbg/dbgdriver.cpp
>kdbg/dbgmainwnd.cpp
grep -C 20 "pid\(\)" kdbg/gdbdriver.cpp
>.... Extra stuff
>void GdbDriver::interruptInferior()
>{
>    ::kill(pid(), SIGINT);
>.... Extra stuff
echo "Ah, it's a class... I bet pid()is a function"^C
echo "After following the inheritance chain, I found..."^C

http://doc.qt.io/qt-5/qprocess-obsolete.html#pid

这是一个QProcess成员函数。该类继承自QProcess继承的类。 =)

09-08 04:28