【发布时间】:2011-03-03 14:31:10
【问题描述】:
我正在为write() 编写一个包装例程以覆盖原始系统函数,并且在其中我需要通过execve() 执行另一个程序;为此我包含了头文件unistd.h。我收到错误 conflicting types for 'write' /usr/include/unistd.h:363:16: note: previous declaration of 'write'was here。如果有人可以帮助我,我将非常感激,因为我需要从包装器内部调用另一个程序并从包装器例程内部向它发送参数。
【问题讨论】:
-
如果您正在编写一个包装例程,则不应使用与您尝试包装的名称相同的名称。或者使用标题中可能存在的名称。更好地查看您的错误。它说明了问题所在。您还应该显示一些代码。
-
如果我不使用与我要包装的名称相同的名称,那么我的函数将如何被调用而不是原始的 write 系统调用。
-
看看“weak symbols”。也就是说,这是一件非常危险的事情;确保它确实是满足您需要的唯一方法。