应该之后开始每天记录一点,不然这些笔记过段时间都不知道放哪了。
-
fork 和vfork 的区别在于vfork子进程共享父进程地址空间,子进程先执行,这意味着变量是共享的,子进程一边改变,父进程的变量的值也会受到影响。
-
俩进程在写同一个文件如果使用open(O_APPEND),write的系统调用的时候,父进程和子进程的调用次序不一定,写入文件中是交替的(但不会覆盖),如果使用的是fopen(“ab”),fwrite的c库函数的时候,父进程和子进程依旧调用次序不一定,但写入文件中如果数据较小,未出现交替现象,数据大起来到4096字节的时候交替给另一个进程写入。
但如果是open()+lseek(END)则会产生覆盖现象 -
、strtok_r函数
strtok_r函数是linux下分割字符串的安全函数,函数声明如下:
char *strtok_r(char *str, const char *delim, char **saveptr);
该函数也会破坏带分解字符串的完整性,但是其将剩余的字符串保存在saveptr变量中,保证了安全性。 -
当描述符0和f d共享同一文件表项 。例如,若描述符 0被只读打开,那么我们也只对 f d进
行读操作。即使系统忽略打开方式,并且下列调用成功:
fd = open("/dev/fd/0", O_RDWR);
我们仍然不能对f d进行写操作。 -
指定了O_APPEND打开文件,使用lseek到文件任意一个位置写都没有用,全会写到文件末尾。open(O_APPEND )=open()+lseek(fd,0,SEK_END)的原子操作。open(O_APPEND)需要指定O_WRONLY或者O_