• 4388阅读
  • 0回复

QProcess::pid 函数不兼容问题 [复制链接]

上一主题 下一主题
离线sbtree
 
只看楼主 倒序阅读 楼主  发表于: 2010-10-05
— 本帖被 XChinux 执行加亮操作(2010-10-21) —
Q_PID QProcess::pid () const
Returns the native process identifier for the running process, if available. If no process is currently running, 0 is returned.
原以为这个函数是返回进程id,今天仔细看了一下帮助文档,才发现不完全正确。从这个函数的说明来看,它应该返回一个进程标识符,类型为Q_PID,至于这个标识符是什么样子,对于不同的系统有不同的定义,不能简单地认为就是进程号。再看下面,Qt对这个类型的定义:

typedef Q_PID
Typedef for the identifiers used to represent processes on the underlying platform. On Unix and Symbian, this corresponds to qint64; on Windows, it corresponds to _PROCESS_INFORMATION*.
在Unix和Symbian系统下这是一个类型为qint64的值,而在Windows下是一个_PROCESS_INFORMATION类型指针。所以如果想进一步得到进程号,就必须针对不同的系统平台进行条件编程才有可能实现代码的跨平台应用。例如在Windows下,就要pid ()->dwProcessId才能得到进程号。

这是今天看文档时偶然发现的一个问题,类似的内容应该在文档中还有多处,所以查看文档的时候要仔细才行。如果不注意到这些问题,即使你的代码完全用Qt和C++编写的也未必能在不同平台上运行良好,尽管Qt自身号称跨平台。


windows 7 + VC++2008 + Qt4.5.2
快速回复
限100 字节
 
上一个 下一个