青岛个人接网站建设,公司起名用字大全,免费logo设计制作,做美图 网站有哪些~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件. 这里我看到的是centos的操作#xff0c;但我用的是debian系的ubuntu#xff0c;百度了一下发现debian的在这里…~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件. 这里我看到的是centos的操作但我用的是debian系的ubuntu百度了一下发现debian的在这里
我们进文件看下 这里执行的是.bashrc这个文件 这里可以吧系统编码改成可以识别中文的 export LC_ALLzh_CN.UTF8 export LANG$LC_ALL 大家可以自行修改想要的编码修改完重新执行一下用户文件或者重启或者重新登陆都是可以的
文件共享 我们要用open函数 我们这里用man查看手册 linux自带的工具 man 手册 man 1 是普通shell 的命令 比如 ls man 2 是系统 调用函数 open write 说明 比如 查看 open 函数 man 2 open 我们把包含的库文件粘贴上去 open打开文件参数
我们放两个参数就可以了第一个是文件指针打开文件的路径flags我们查看man手册我们取O_RDWR读写属性
注意这里的文件流返回值int 我们再看下状态码 -1就是出错的
#include stdio.h
#include sys/types.h
#include sys/stat.h
#include fcntl.hint main(void)
{ int fd;fd open(./1.txt,O_RDWR);if(fd -1){printf(打开文件失败\n);return -1; }else{printf(打开文件成功\n); }return 0;}可以发现这里报错了 这里是因为open文件并不能创建 我们创建文件然后运行 write函数写入
#include sys/types.h
#include unistd.h
#include stdlib.h
#include stdio.h
#include string.h
#include signal.h
#include errno.h
#include sys/stat.h
#include fcntl.h
#include sys/wait.h
int main(void)
{ int fd;fd open(./1.txt,O_RDWR);if(fd -1){printf(打开文件失败\n);return -1; }else{printf(打开文件成功\n); }pid_t pid;pid fork();if(pid -1){ printf(pid0 err.\n);return -1;}else if(pid 0){ printf(child:%d,parent:%d\n,getpid(),getppid());write(fd,parent,6); }else if(pid 0){write(fd,child,5);printf(Parent Process id: %d\n,getpid());wait(NULL); //等待子进程结束再返回里面参数一般是空指针}return 0;}执行完毕我们可以看到两个进程都向这个文件写入数据了 我们用for语句多写入几行
#include sys/types.h
#include unistd.h
#include stdlib.h
#include stdio.h
#include string.h
#include signal.h
#include errno.h
#include sys/stat.h
#include fcntl.h
#include sys/wait.h
int main(void)
{ int fd;fd open(./1.txt,O_RDWR);if(fd -1){printf(打开文件失败\n);return -1; }else{printf(打开文件成功\n); }pid_t pid;pid fork();if(pid -1){ printf(pid0 err.\n);return -1;}else if(pid 0){ for(int i 0 ;i1000;i){write(fd,parent ,8); } printf(child:%d,parent:%d\n,getpid(),getppid());write(fd,parent,6); close(fd); }else if(pid 0){for(int i 0 ;i1000;i){write(fd,child ,7); } printf(Parent Process id: %d\n,getpid());wait(NULL); //等待子进程结束再返回里面参数一般是空指针}close(fd);return 0;}可以看到并发执行写入的顺序不可控且是共享的 注意这里又两个写入流子进程和父进程都需要close(fd)