系统调用 sync() 的模糊引用
Ambiguous reference of system call sync()
我试图在我的 c++ 方法中调用 reboot() 之前写入缓存。编译时,我收到引用 'sync' 不明确的错误。我正在使用的是在 "include " 中定义的,我们的第三方包括引入另一个 sync() 函数的 cil 库。我如何获得 pint 到 unistd.h 版本?
在C++中,如果要引用C++中关于全局变量的全局sync(2) (see this,可以使用::sync();
;你需要适当地 #include <unistd.h>
。
您不能在 C++ 中将语句放在全局范围内;语句应该只出现在函数定义中。
我还建议避免在一个 sync();
之后调用 reboot(2),因为我认为 sync
可能无法完成。也许
void restart_the_system(void) { // a C++ function
::sync();
::sleep (1);
::sync();
::sleep (1);
::sync();
::reboot (LINUX_REBOOT_CMD_POWER_OFF);
}
可能会稍微好一点。但是最近,你的 Linux 可能正在使用 systemd,你应该用它来重启。
我试图在我的 c++ 方法中调用 reboot() 之前写入缓存。编译时,我收到引用 'sync' 不明确的错误。我正在使用的是在 "include " 中定义的,我们的第三方包括引入另一个 sync() 函数的 cil 库。我如何获得 pint 到 unistd.h 版本?
在C++中,如果要引用C++中关于全局变量的全局sync(2) (see this,可以使用::sync();
;你需要适当地 #include <unistd.h>
。
您不能在 C++ 中将语句放在全局范围内;语句应该只出现在函数定义中。
我还建议避免在一个 sync();
之后调用 reboot(2),因为我认为 sync
可能无法完成。也许
void restart_the_system(void) { // a C++ function
::sync();
::sleep (1);
::sync();
::sleep (1);
::sync();
::reboot (LINUX_REBOOT_CMD_POWER_OFF);
}
可能会稍微好一点。但是最近,你的 Linux 可能正在使用 systemd,你应该用它来重启。