如何从另一个范围访问 unistd write?
How can I access unistd write from another scope?
我正在尝试从 class 内部使用 unistd.h 写入,其中声明了另一个“写入”函数,但我不知道我应该使用哪个范围解析器,因为unistd 不是一个库,所以 unistd::write() 不会工作。
如何从函数内部调用它?
// this won't compile
#include <stdio.h> // printf
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
class Fifo {
public:
void write(const char* msg, int len);
};
void Fifo::write(const char* msg, int len) {
int fd;
const char* filename = "/tmp/fifotest";
mkfifo(filename, 0666);
fd = open(filename, O_WRONLY|O_NONBLOCK);
write(fd, msg, len);
close(fd);
}
int main()
{
Fifo fifo;
fifo.write("hello", 5);
return 0;
}
所以使用未命名范围write
。
write(fd, msg, len);
等于
this->write(fd, msg, len);
write
在 Fifo
函数中解析为 Fifo::write
。做:
::write(fd, msg, len);
使用全局范围。喜欢:
#include <cstdio> // use cstdio in C++
extern "C" { // C libraries need to be around extern "C"
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
}
class Fifo {
public:
void write(const char* msg, int len);
};
void Fifo::write(const char* msg, int len) {
int fd;
const char* filename = "/tmp/fifotest";
mkfifo(filename, 0666);
fd = open(filename, O_WRONLY|O_NONBLOCK);
::write(fd, msg, len); //here
close(fd);
}
int main() {
Fifo fifo;
fifo.write("hello", 5);
return 0;
}
研究 C++ 中的作用域、命名空间和作用域解析运算符以获取更多信息。
我正在尝试从 class 内部使用 unistd.h 写入,其中声明了另一个“写入”函数,但我不知道我应该使用哪个范围解析器,因为unistd 不是一个库,所以 unistd::write() 不会工作。
如何从函数内部调用它?
// this won't compile
#include <stdio.h> // printf
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
class Fifo {
public:
void write(const char* msg, int len);
};
void Fifo::write(const char* msg, int len) {
int fd;
const char* filename = "/tmp/fifotest";
mkfifo(filename, 0666);
fd = open(filename, O_WRONLY|O_NONBLOCK);
write(fd, msg, len);
close(fd);
}
int main()
{
Fifo fifo;
fifo.write("hello", 5);
return 0;
}
所以使用未命名范围write
。
write(fd, msg, len);
等于
this->write(fd, msg, len);
write
在 Fifo
函数中解析为 Fifo::write
。做:
::write(fd, msg, len);
使用全局范围。喜欢:
#include <cstdio> // use cstdio in C++
extern "C" { // C libraries need to be around extern "C"
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
}
class Fifo {
public:
void write(const char* msg, int len);
};
void Fifo::write(const char* msg, int len) {
int fd;
const char* filename = "/tmp/fifotest";
mkfifo(filename, 0666);
fd = open(filename, O_WRONLY|O_NONBLOCK);
::write(fd, msg, len); //here
close(fd);
}
int main() {
Fifo fifo;
fifo.write("hello", 5);
return 0;
}
研究 C++ 中的作用域、命名空间和作用域解析运算符以获取更多信息。