the code:
int main(int argc, char **argv) { int fd = open("test.txt", O_CREAT|O_RDWR, 0200|0400); if(fd == -1) { printf("failure to oepn"); exit(-1); } int iRet = write(fd, "aaaaaaaaaa", 10); if(iRet == -1) { printf("failure to writer"); exit(-1); } sleep(10); printf("You must remove"); iRet = write(fd, "bbbbbbbbbb", 10); if(iRet == -1) { printf("failure to after writer"); exit(-1); } exit(0); }
during sleep () you delete test.txt, but the process writes successfully, why? if the log instance is "Singleton", you delete the file on the .write disk successfully, but you cannot get anything.
class log { public: void loggerWriter(std::string str); int fd; }; log::log(std::string filename):fd(-1) { fd = open(filename.c_str(), O_CREAT|)
"unlink" cannt solve this problem.
source share