1

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

::kill(pid(), SIGINT);

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

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

4

1 回答 1

1
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。=)

于 2017-04-11T05:55:33.750 回答